这是根据《C#网络编程实例教程》中学到的知识实现的一个C#网页简单下载器,其中涉及到的知识主要是HTTP协议编程中相关类:HttpWebRequest类、HttpWebResponse类、WebRequest类、WebResponse类、Uri类、WebClient类。通过它们相应的方法实现,这里涉及到了4个新接触的知识点我想重点讲述:
      (1).ComboBox控件:这是一个下拉列表的可编辑的文本框,右键该控件在显示的"编辑项"中添加网址,可见实例中的下拉控件;
      (2).saveFileDialog控件:这是一个保存文件位置对话框,通过该控件可以保存文本文件在自定义位置,还有一个相对应的打开控件OpenFileDialog;
      (3).HttpWebResponse类属性:该类常用属性如下:每个类都有相应的属性,这里只详细说明HttpWebResponse类的属性:

在下列实例中我使用的是HttpWebResponse response.ContentLength获取应答内容长度。
      (4).try..catch..finally:用于处理异常情况,try块中使用引发异常语句,try块中发生异常后跳转到catch异常处理程序,catch用于异常处理程序,即使引发异常,finally块中的代码也会执行,从程序中释放资源。

一.界面设计

添加saveFileDialog控件,该控件的Filter(文件筛选器)属性设置为"Web文件|*.htm"
      添加一个ComboBox控件设置Text属性为“http://www.baidu.com”,右键该控件Items属性添加如下几条网址:

二.源代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;//添加命名空间
using System.Net;
using System.IO;namespace Http_Web_Request
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//双击"开始下载"添加Click事件private void button1_Click(object sender, EventArgs e){string uri = comboBox1.Text;//HttpWebRequest对象实例:该类用于获取和操作HTTP请求 创建WebRequest对象HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);     //HttpWebResponse对象实例:该类用于获取和操作HTTP应答HttpWebResponse response = (HttpWebResponse)request.GetResponse();   //获取答复//构造数据流、文件流对象实例Stream stream = null;FileStream filestream = null;try{//获取应答流赋值stream = response.GetResponseStream();    //确定应答内容的大小long size = response.ContentLength;       //定义"另存为对话框"文件类型saveFileDialog1.Filter = "网页文件(*.htm)|*.htm|ASP.NET文件(*.aspx)|*.aspx";//打开保存对话框 点击"确定"按钮执行if (saveFileDialog1.ShowDialog() == DialogResult.OK){//为文件流对象实例赋值filestream = new FileStream(saveFileDialog1.FileName, FileMode.OpenOrCreate, FileAccess.Write);int length = 1024;byte[] Num = new byte[1025];       //构造字组int i = 0;while ((i = stream.Read(Num, 0, length)) > 0)  //流不为空写流{filestream.Write(Num, 0, i);               //写流}}}catch (Exception msg){MessageBox.Show(msg.Message);         //异常处理}finally{stream.Close();                       //关闭流filestream.Close();}}}
}

三.运行结果

运行程序在“下拉”菜单中选择“百度”,点击“开始下载”后弹出的保存对话框中选择下载地址自定义命名保存,如下图所示:

保存后显示下载后的静态网址如下图所示:

同时也在保存有的静态网页时会产生乱码,如csdn网站,它下载的内容不像我们说看到的正常形式保存的。

四.总结

通过这个例子关于Http网络编程知识我想主要表达saveFileDialog控件的使用、ComboBox下拉控件的使用、类中常用的属性的熟悉及了解、try.catch.finally语法的应用,感谢我看的书籍作者、一些博客及自己,这篇文章加深了我自己对相关知识的了解,同时也希望帮助大家!有错误或不足之处见谅!
    (By:Eastmount 7-30-下午4点   http://blog.csdn.net/eastmount/)

C# 网络编程之网页简单下载实现相关推荐

  1. C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录

    C# 网络编程之网页自动登录 (一).使用WebBrower控件模仿登录 最近学习C#网络编程中,想实现网页自动登录并提交GET/POST信息,再实现循环登录不断发送报文给服务器,服务器发送消息给客户 ...

  2. C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。

    C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口. 最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件 抖动窗口功能 ...

  3. 网络编程--JAVA之多线程下载后续:断点续存

    这篇博客就是接在我上篇博客网络编程–JAVA之多线程下载的基础上来实现的. 首先,我来说一下断点续存能解决啥问题: 假如当我们在进行MP4下载时,如果突然出现人为的中断或者意外的中断,那么当我们再次点 ...

  4. C# 网络编程之最简单浏览器实现

    最近学习C#网络编程的HTTP协议编程,HTTP即Hypertext Transfer Protocol的缩写,意为:超文本传输协议.其中与HTTP相关的知识主要有六个类的知识,分别是       ( ...

  5. iOS项目开发实战——iOS网络编程获取网页Html源代码

    如今我们身处互联网的时代,任何一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比较low,这里我们将会开始使用Swift开发iOS应用,并且主要来实现 ...

  6. 《python网络编程基础》PDF 下载

    <python网络编程基础> > 方式一: 链接:百度网盘下载地址 [ https://pan.baidu.com/s/1BiDw-gVKGrLbgUnqHUt1qQ ] 提取码:4 ...

  7. Windows网络编程入门:简单的客户端和服务器通信程序调试

    昨日入手Windows网络编程经络这本书,第一章给了Echo客户端和服务器的简单通信实例程序.从小白到入门目测都是比较苦逼,居然想不到怎么来测试结果.什么同时运行啊.分别编译运行啊乱七八糟的想法就开始 ...

  8. NIO网络编程实战之简单多人聊天室

    NIO网络编程实战 利用NIO编程知识,实现多人聊天室. 1. NIO编程实现步骤 第一步:创建Selector 第二步:创建ServerSocketChannel,并绑定监听端口 第三步:将Chan ...

  9. c++网络编程:实现简单的聊天——基于服务器/客户端的模式

    c++ socket编程 服务器/客户端 最近在学c++网路编程,写个帖子记录自己的学习过程,部分内容参考一个博主的,附上他的链接: link 实现: 客户端往服务器端发送一条数据,服务器端接收数据并 ...

最新文章

  1. 一线互联网智能推荐系统架构演进
  2. python数据处理实例-Python数据预处理实例详解
  3. [算法总结] 13 道题搞定 BAT 面试——字符串
  4. SpringBoot + ShardingSphere 秒级分库分表!
  5. 前端与移动开发之vue-day3(4)
  6. ACM算法书籍推荐zz
  7. OAuth 及 移动端鉴权调研
  8. java中是值传递引用传递_Java是按值传递而不是按引用传递
  9. Eclipse之智能提示 actionscript javascript java开发环境智能提示
  10. kubernetes Deployment介绍
  11. 自学android编程教程,安卓编程入门教程 安卓编程如何自学
  12. 路畅安卓最新固件升级_路畅车载导航系统刷机-路畅导航系统刷机固件大全下载最新完整版-《百度网盘下载》西西软件下载...
  13. Excel表格中如何换行
  14. 十个免费专利检索分析网站
  15. linux 修改网卡mac地址,Ubuntu 更改mac地址
  16. 基于HTML5移动app开发教程一
  17. 联想微型计算机拆,联想10064一体机拆机,联想一体机硬盘怎么拆
  18. FIPS 140-3与140-2的差异-2
  19. spring使用freemarker生成word文档包含表格、图片(循环插入)
  20. MAC OS X mountain lion强制关机

热门文章

  1. 使用 Git 添加文件时,出现 Warning: LF will be replaced by CRLF in...提示及解决方案
  2. Task运行过程分析1
  3. 人工智能+名片,我们看到了营销圈中的“阿尔法
  4. EasyDSS提示所配置路径不能包含中文的处理方法
  5. 无线射频芯片CC2540F256RHAR 中文资料介绍
  6. 微积分的历史(五):发展之泰勒公式(上)
  7. 第002篇 深入体验C#项目开发(一)
  8. 正负数值的正则表达式
  9. ugui 转轮_(转)unity3D的FingerGestures插件
  10. 大学学计算机7代i5够吗,学生党必看:最新的7代酷睿与Core i5相比该选谁?