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