WebRequest 和 HttpWebRequest 区别
来源:互联网 发布:sql server win7 编辑:程序博客网 时间:2024/05/19 15:39
首先介绍一下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对象。
- WebRequest 和 HttpWebRequest 区别
- WebRequest 和 HttpWebRequest 区别
- WebRequest 和 HttpWebRequest 区别
- C#,WebRequest类、HttpWebRequest类与HttpRequest类的区别
- webrequest、httpwebrequest、webclient、HttpClient 四个类的区别?
- WebClient和HttpWebRequest区别
- WebClient 和 HttpWebRequest的区别
- HttpRequest 和HttpWebRequest的区别
- webrequest post 数据 编码 HttpWebRequest get
- HttpWebRequest类与 WebRequest类的使用
- webrequest post 数据 编码 HttpWebRequest get
- HttpRequest 和HttpWebRequest的区别(转)
- c# WebRequest或HttpWebRequest多线程下载一定要注意到问题
- webRequest和webNavigation
- HttpWebRequest的标头和Heanders集合的区别
- HttpWebRequest.CookieContainer与HttpWebResponse.Cookies的区别和联系
- 实测 c# .net 中 httpwebrequest 和 httpclient 性能 区别 对比
- HttpWebRequest.CookieContainer与HttpWebResponse.Cookies的区别和联系
- android studio全局搜索 快捷键
- iOS 开发 小技巧
- 阿里云https证书安装
- Go web 服务简单使用
- 手把手教你 ----JNI的基础实现
- WebRequest 和 HttpWebRequest 区别
- SSD 之LBA和PBA
- 简单粗暴的javaScript的数据类型
- mongodb dirver for java【Text Search】
- 如何运行javascrip的脚本
- Ubuntu下安装mysql
- Xcode7中你一定要知道的炸裂调试神技
- I2C设备的创建
- Spring Boot集成Mybatis