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