二..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协议的方法。