二..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属性设置。 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协议的方法。
新闻热点
疑难解答