HttpWebResponse类的作用用于在客户端获取返回的响应的信息,还记得HttpResponse类吗?你是否在写B/S程序的时候,经常用到Response.Write()呢?
HttpResponse用于在服务器端设置服务端的响应信息,而HttpWebResponse类用于客户端获取服务器端返回的响应信息。这个类还是比较简单,还是可以照着以前的MSDN全部写一遍。
一、属性
CharacterSet 获取响应的字符集。
ContentEncoding 获取用于对响应体进行编码的方法。
ContentLength 获取请求返回的内容的长度。 (重写 WebResponse..::.ContentLength。)
ContentType 获取响应的内容类型。 (重写 WebResponse..::.ContentType。)
Cookies 获取或设置与此响应关联的 Cookie。
Headers 获取来自服务器的与此响应关联的标头。 (重写 WebResponse..::.Headers。)
IsFromCache 获取一个 Boolean 值,该值指示此响应是否为从缓存中获取的。 (继承自 WebResponse。)
IsMutuallyAuthenticated 获取一个 Boolean 值,该值指示客户端和服务器是否都已经过身份验证。 (重写 WebResponse..::.IsMutuallyAuthenticated。)
LastModified 获取最后一次修改响应内容的日期和时间。
Method 获取用于返回响应的方法。
ProtocolVersion 获取响应中使用的 HTTP 协议的版本。
ResponseUri 获取响应请求的 Internet 资源的 URI。 (重写 WebResponse..::.ResponseUri。)
Server 获取发送响应的服务器的名称。
StatusCode 获取响应的状态。
StatusDescription 获取与响应一起返回的状态说明。
static void Main(string[] args) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com"); //创建一个请求示例 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Console.WriteLine(response.CharacterSet); //输出 utf-8 Console.WriteLine(response.ContentEncoding); //空 Console.WriteLine(response.ContentLength); //输出 10310 Console.WriteLine(response.ContentType); //输出 text/html charset=utf-8 CookieCollection cc = response.Cookies; Console.WriteLine(cc.Count); //输出 0 WebHeaderCollection whc = response.Headers; Console.WriteLine(whc.Count); //输出 9 foreach (string h in whc.AllKeys) { Console.WriteLine(h.ToString() + " " + whc[h].ToString()); //输出所有的响应头信息 } Console.WriteLine(response.IsFromCache); //输出 false 该值指示响应是否从缓存获取的 Console.WriteLine(response.IsMutuallyAuthenticated); //输出 false 客户端和服务器端都已通过身份认证 Console.WriteLine(response.LastModified); //输出 2013-04-06 21:03:06 最后一次修改响应的时间和日期 Console.WriteLine(response.Method); //输出 Get 返回响应的方法 Console.WriteLine(response.ProtocolVersion); //输出 1.1 响应的HTTP协议的版本 Console.WriteLine(response.ResponseUri); //输出 http://www.baidu.com 响应请求的Interner资源的URI Console.WriteLine(response.Server); //输出 BWS/1.0 发送响应的服务器的名称 Console.WriteLine(response.StatusCode); //输出 OK 获取响应的状态,这个不是状态码,而是状态描述,为什么不是200呢,奇怪啊,测试了好几个网站都是OK,而不是200 Console.WriteLine(response.StatusDescription); //输出 OK 这个是状态描述, Console.ReadKey(); }
二、方法
Close 关闭响应流。 (重写 WebResponse..::.Close()()()。)
CreateObjRef 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
Dispose 释放由 HttpWebResponse 使用的非托管资源,并可根据需要释放托管资源。
GetLifetimeService 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
GetObjectData 基础结构。 使用将目标对象序列化所需的数据填充 SerializationInfo。 (重写 WebResponse..::.GetObjectData(SerializationInfo, StreamingContext)。)
GetResponseHeader 获取与响应一起返回的标头的内容。
GetResponseStream 获取流,该流用于读取来自服务器的响应的体。 (重写 WebResponse..::.GetResponseStream()()()。)
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
class Program { static void Main(string[] args) { HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.baidu.com"); //创建一个请求示例 HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Console.WriteLine(response.GetResponseHeader("Content-Type")); //输出 text/html;charset=utf-8 Stream stream = response.GetResponseStream(); //获取响应的字符串流 StreamReader sr = new StreamReader(stream); //创建一个stream读取流 string html = sr.ReadToEnd(); //从头读到尾,放到字符串html李米 Console.WriteLine(html); //输出首页HTML代码 Console.ReadKey(); } }
基本就这么多东西了。