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属性设置。
Transferencoding 由TransferEncoding属性或SendChunked属性设置。
UserAgent 由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协议的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值