首先介绍一下HTTP协议,HTTP亦即Hpyer Text Transfer Protocal的缩写,它是现代互联网上最重要的一种网络协议,超文本传输协议位于TCP/IP协议的应用层,是一个面向无连接、简单、快速的C/S结构的协议。HTTP的工作过程大体上分连接、请求、响应和断开连接四个步骤。C#语言对HTTP协议提供了良好的支持,在.NET类库中提供了WebRequest和WebResponse类,这两个类都包含在System.Net命名空间中,利用这两个类可以实现很多高级的网络功能,本文中多线程文件下载就是利用这两个类实现的。 WebRequest和WebResponse都是抽象基类,因此在程序中不能直接作为对象使用,必须被继承,实际使用中,可根据URI参数中的URI前缀选用它们合适的子类,对于HTTP这类URI,HttpWebRequest和HttpWebResponse类可以用于处理客户程序同WEB服务器之间的HTTP通讯。

  HttpWebRequest类实现了很多通过HTTP访问WEB服务器上文件的高级功能。HttpWebRequest类对WebRequest中定义的属性和方法提供支持,HttpWebRequest将发送到Internet资源的公共HTTP标头的值公开为属性,由方法或系统设置,常用的由属性或方法设置的HTTP标头为:接受, 由Accept属性设置, 连接, 由Connection属性和KeepAlive属性设置, Content-Length, 由ContentLength属性设置, Content-Type, 由ContentType属性设置, 范围, 由AddRange方法设置. 实际使用中是将标头信息正确设置后,传递到WEB服务器,WEB服务器根据要求作出回应。

  HttpWebResponse类继承自WebResponse类,专门处理从WEB服务器返回的HTTP响应,这个类实现了很多方法,具有很多属性,可以全面处理接收到的互联网信息。在HttpWebResponse类中,对于大多数通用的HTTP标头字段,都有独立的属性与其对应,程序员可以通过这些属性方便的访问位于HTTP接收报文标头字段中的信息,本例中用到的HttpWebResponse类属性为:ContentLength 既接收内容的长度。

  有了以上的了解后,下面看看这两个类的用法,要创建HttpWebRequest对象,不要直接使用HttpWebRequest的构造函数,而要使用WebRequest.Create方法初始化一个HttpWebRequest实例,如:

HttpWebRequest hwr=(HttpWebRequest)WebRequest.Create(http://www.163.com/);
  创建了这个对象后,就可以通过HttpWebRequest属性,设置很多HTTP标头字段的内容,如hwr.AddRange(100,1000);设置接收对象的范围为100-1000字节。

  HttpWebReques对象使用GetResponse()方法时,会返回一个HttpWebResponse对象,为提出HTTP返回报文信息,需要使用HttpWebResponse的GetResponseStream()方法,该方法返回一个Stream对象,可以读取HTTP返回的报文,如:首先定义一个Strean 对象 public System.IO.Stream ns; 然后 ns=hwr.GetResponse ().GetResponseStream ();即可创建Stream对象。

HttpWebRequest 介绍相关推荐

  1. C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  2. C#模拟POST提交表单(二)--HttpWebRequest以及HttpWebResponse

    上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...

  3. HttpWebRequest下载文件,乱码问题解决方案

    写在前面 今天之所以会总结HttpWebRequest下载文件,主要是因为在使用该类下载文件的时候,有些地方需要注意一下,在实际的项目中遇到过这种问题,觉得还是有必要总结一下的.在下载文件时,最常见的 ...

  4. C# HttpWebRequest提交数据方式

    HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程 ...

  5. OSS.Social微信项目标准库介绍

    经过本周的努力,昨晚终于完成OSS.Social微信项目的标准库支持,当前项目你已经可以同时在.net framework和.net core 中进行调用,调用方法也发生了部分变化,这里我简单分享下, ...

  6. 【转】C# HttpWebRequest提交数据方式

    [转]C# HttpWebRequest提交数据方式 HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择.它们支持一系列有用的属性.这两个类位 于Sy ...

  7. HttpWebRequest以及HttpWebResponse

    上次介绍了用WebClient的方式提交POST请求,这次,我继续来介绍用其它一种方式 HttpWebRequest以及HttpWebResponse 自认为与上次介绍的WebClient最大的不同之 ...

  8. [保存]C# 使用HttpWebRequest提交ASP.NET表单并保持Session和Cookie

    由于种种原因,我们有时需要从互联网上抓取一些资料,有些页面可以直接打开,而有些页面必登录之后才能打开.本文介绍的是使用 HttpWebRequest 和 HttpWebResponse 自动填写提交 ...

  9. WebRequest 和 HttpWebRequest 区别

    首先介绍一下HTTP协议,HTTP亦即Hpyer Text Transfer Protocal的缩写,它是现代互联网上最重要的一种网络协议,超文本传输协议位于TCP/IP协议的应用层,是一个面向无连接 ...

最新文章

  1. C++中的volatile关键字
  2. Python 实现猜年龄小游戏
  3. SAP 电商云 Spartacus UI 3.4.5 版本引入的对并发 SSR 请求的支持
  4. 如何用Ant Design Pro框架做项目省力
  5. 大白菜pe解锁bitlocker_微PE工具箱 v2.1 官方版,最好用的 Win10PE 系统
  6. procreate 笔刷_Procreate新手漫画入门:笔刷,图层,上色
  7. CC++中的qsort库函数
  8. 【转】JVM内存管理:深入垃圾收集器与内存分配策略
  9. Trafodion的介绍
  10. PyTorch自定义CUDA算子教程与运行时间分析
  11. 四川省高中计算机考试,四川高中信息技术学业水平考试时间
  12. noob_Noob选择JavaScript框架指南
  13. 学习大数据需要哪些数学知识?
  14. java虎胆龙威_格斗之王3虎胆龙威
  15. 掌上湘雅服务器无响应是什么情况,掌上湘雅APP查询体检报告
  16. 提升工作效率五步走之前两步 2016-09-18 思佳真探
  17. 中国联通沃云----弹性块存储使用说明
  18. 邮件群发单显怎么发?如何让相互之间看不到?群发单显设置技巧
  19. 机器学习算法——集成学习1(个体与集成)
  20. 商务领航的网关问题解决

热门文章

  1. 26.SSR解决了什么问题?有做过SSR吗?你是怎么做的?
  2. python中namedtuple函数用法详解
  3. Redis设置密码,查看密码,修改密码,忘记密码。
  4. 【深入理解JS核心技术】2. 什么是原型链?
  5. 5G到底什么时候来,它究竟能给我们带来什么?
  6. 为什么生命科学企业都在陆续上云?
  7. uni--ReferenceError plus is not defined
  8. yolo-v3代码学习
  9. MyEclipse中maven项目中WEBROOT目录问题
  10. 什么是编程?该怎么学习编程?