C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  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();
        }
    }

  基本就这么多东西了。

posted on 2013-04-06 18:23  逆心  阅读(13599)  评论(2编辑  收藏  举报