Visual Basic .Net中实现HTTP协议(二)

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

你可能感兴趣的:(.net,应用服务器,框架,网络协议,网络应用)