|
二..Net FrameWork SDK中提供的实现HTTP协议的类:
在.Net FrameWork SDK中实现HTTP协议的类主要位于命名空间“System.Net”。主要的类有十七种,其名称及其功能简介具体如表02所示:
| 类 |
作用 |
| FileWebRequest |
提供WebRequest类的文件系统实现。 |
| FileWebResponse |
提供WebResponse类的文件系统实现。 |
| GlobalProxySelection |
包含所有HTTP请求的全局默认代理实例。 |
| HttpVersion |
定义受HttpWebRequest和HttpWebResponse类支持的HTTP 版本号。 |
| HttpWebRequest |
提供WebRequest类的HTTP特定的实现。 |
| HttpWebResponse |
提供WebResponse类的HTTP特定的实现。 |
| NetworkCredential |
为基于密码的身份验证方案提供凭据。 |
| CredentialCache |
为多个凭据提供存储。 |
| ServicePoint |
提供HTTP连接的连接管理。 |
| WebClient |
提供向URI标识的资源发送数据和从URI标识的资源接收数据的公共方法。不能继承此类。 |
| WebException |
通过可插接协议访问网络期间出错时引发的异常。 |
| WebHeaderCollection |
包含与请求或响应关联的协议标头。 |
| WebPermission |
控制访问HTTPInternet资源的权限。 |
| WebPermissionAttribute |
指定权限以访问Internet资源。 |
| WebProxy |
包含WebRequest类的HTTP代理设置。 |
| WebRequest |
发出对统一资源标识符(URI)的请求。 |
| WebResponse |
提供来自统一资源标识符(URI)的响应。 | 表02:.Net FrameWork SDK中提供的用以实现HTTP协议的类
由于.Net FrameWork SDK中提供的用以实现HTTP协议的类实在太多,下面就选择一些在实现HTTP协议的客户端程序中经常使用的、以及本文下面内容中所涉及到的的类加以介绍。
1. WebRequest类:
WebRequest类是一个基类,它在.Net框架中主要用于访问Internet数据的请求/响应模型。在创建WebRequest类实例时,请注意下面二个问题:
(1).一般不采用WebRequest类提供的构造函数,而使用其的Creat方法来创建并初始化WebRequest类实例。
(2).HttpWebRequest类虽有构造函数。但使用复杂,所以并不提倡。请注意WebRequest类的Creat方法的语法,其语法如下:
public static WebRequest Create (
Uri requestUri
) ;
当以“http://”或者“https://” 开头的URI传递到上面的requestUri参数中时,Create方法返回其实虽为WebRequest实例,但此实例的实质为HttpWebRequest实例。在下面内容中WebRequest的主要作用就是为创建HttpWebRequest 实例。表03是WebRequest类中的常用属性和方法及其说明:
| 属性 |
说明 |
| ConnectionGroupName |
获取或设置请求的连接组的名称。 |
| ContentLength |
获取或设置所发送的请求数据的内容长度。 |
| ContentType |
获取或设置所发送的请求数据的内容类型。 |
| Credentials |
获取或设置用于对Internet资源请求进行身份验证的网络凭据。 |
| Headers |
获取或设置与请求关联的标头名称/值对的集合。 |
| Method |
获取或设置要在此请求中使用的协议方法。 |
| PreAuthenticate |
指示是否对请求进行预先身份验证。 |
| Proxy |
获取或设置用于访问此Internet资源的网络代理。 |
| RequestUri |
获取与请求关联的Internet资源的 |
| Timeout |
获取或设置请求超时前的时间长度。 | 表03:WebRequest类的常用属性及其说明
2. HttpWebRequest类:
HttpWebRequest类主要是实现上面介绍的HTTP会话中的第一、二步骤。当创建完HttpWebRequest实例后,并设定HttpWebRequest实例的“GET”属性后,HTTP请求信息中的请求行就定义完成了。定义HTTP请求信息中的请求头,并把请求信息发送出去就需要了解、掌握HttpWebRequest类中的方法和属性。表04是定义HTTP请求头对应的HttpWebRequest类属性和方法,表05是HttpWebRequest类常用方法及其说明。
| 请求头 |
设置 |
| Accept |
由Accept属性设置。 |
| Connection |
由Connection属性和KeepAlive属性设置。 |
| Content-Length |
由ContentLength属性设置。 |
| Content-Type |
由ContentType属性设置。 |
| Expect |
由Expect属性设置。 |
| Date |
由系统自动设置为当前日期。 |
| Host |
由系统自动设置为当前主机信息。 |
| If-Modified-Since |
由IfModifiedSince 属性设置。 |
| Range |
由AddRange方法设置。 |
| Referer |
由Referer属性设置。 |
| Transfer |
encoding 由TransferEncoding属性或SendChunked属性设置。 |
| User |
Agent 由UserAgent属性设置。 | 表04:设定HTTP请求头对应HttpWebRequest类方法或属性
| 方法 |
说明 |
| Abort |
取消对Internet资源的请求。 |
| AddRange |
向请求添加范围标头。 |
| BeginGetRequestStream |
开始对用来写入数据的Stream实例进行异步请求。 |
| BeginGetResponse |
开始对Internet资源的异步请求。 |
| EndGetRequestStream |
结束对用于写入数据的Stream实例的异步请求。 |
| EndGetResponse |
结束对Internet资源的异步请求。 |
| GetRequestStream |
获取用于写入请求数据的Stream实例。 |
| GetResponse |
返回来自Internet资源的响应。 | 表05:HttpWebRequest类常用属性及其说明
其中“BeginGetRequestStream”和“EndGetRequestStream”、“BeginGetResponse”和“EndGetResponse”是二对异步方法,其功能分别相当于“GetRequestStream”和“GetResponse”方法。
3. HttpWebResponse类:
HttpWebResponse类主要用以实现HTTP会话中的后面二个步骤。下面介绍的示例中的HttpWebResponse类起的主要作用获得服务器响应的数据,其中包括应答头。HttpWebResponse类虽提供了构造函数,但HttpWebResponse类实例的创建并不使用这个构造函数,这一点和HttpWebRequest类非常相似。而是通过HttpWebRequest类的“GetResponse”方法,此方法是当对指定的URI提出请求通过后,远程Internet资源返回的响应,下面是“GetResponse”方法的语法:
public override WebResponse GetResponse ( ) ;
可见,如果成功返回,则GetResponse方法返回的是包含来自Internet资源的响应的WebResponse实例。但这个返回的实例实质的类型是HttpWebResponse。在Visual Basic .Net中可以通过类型转换就可得到程序中所要使用的HttpWebResponse实例,从而为获取从WWW主机反馈的数据。表06和表07分别是HttpWebResponse类的常用属性和方法及其说明。
| 属性 |
说明 |
| CharacterSet |
获取响应的字符集。 |
| ContentEncoding |
获取用于对响应的体进行编码的方法。 |
| ContentLength |
获取请求返回的内容的长度。 |
| ContentType |
获取响应的内容类型。 |
| Cookies |
获取或设置与此请求关联的Cookie。 |
| Headers |
获取与来自服务器的响应关联的标头。 |
| LastModified |
获取最后一次修改响应内容的日期和时间。 |
| Method |
获取用于返回响应的方法。 |
| ProtocolVersion |
获取响应中使用的HTTP协议的版本。 |
| ResponseUri |
获取响应请求的Internet资源的 |
| Server |
获取发送响应的服务器的名称。 |
| StatusCode |
获取响应的状态。 |
| StatusDescription |
获取与响应一起返回的状态说明。 | 表06:HttpWebResponse类的常用属性及其说明
| 方法 |
说明 |
| Close |
关闭响应流。 |
| GetResponseHeader |
获取与响应一起返回的指定应答头内容。 |
| GetResponseStream |
获取用于读取来自服务器的响应的数据流。 | 表07:HttpWebResponse类的常用属性及其说明
以上介绍的三个类,是Visual Basic .Net编写基于HTTP协议网络应用程序所必须掌握的。当然在.Net FrameWork SDK为能够更好的处理HTTP中各种问题,还提供了许多类,其中包括用以处理身份认证的类,如NetworkCredential和CredentialCache类等。这些类就不具体介绍了。下面就结合若干具体的示例来了解、掌握在Visual Basic .Net使用上述类来实现HTTP协议的方法。
|