您的位置:首页 > 编程学习 > C# > 正文

HttpWebResponse类的属性和方法

更多 时间:2013-11-28 类别:编程学习 浏览量:12154

HttpWebResponse类的属性和方法

HttpWebResponse类的属性和方法

HttpWebResponse类的属性

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     获取与响应一起返回的状态说明。

使用示例

  •  
  • C# 代码   复制
  • 
    static void Main(string[] args)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.studyofnet.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.studyofnet.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();
            }
    		
  •  

    HttpWebResponse类的方法

    Close         关闭响应流。 (重写 WebResponse..::.Close()()()。)
    CreateObjRef       创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
    Dispose          释放由 HttpWebResponse 使用的非托管资源,并可根据需要释放托管资源。
    GetLifetimeService      检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
    GetObjectData        基础结构。 使用将目标对象序列化所需的数据填充 SerializationInfo。 (重写 WebResponse..::.GetObjectData(SerializationInfo, StreamingContext)。)
    GetResponseHeader    获取与响应一起返回的标头的内容。
    GetResponseStream    获取流,该流用于读取来自服务器的响应的体。 (重写 WebResponse..::.GetResponseStream()()()。)
    InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)

    使用示例 

  •  
  • C# 代码   复制
  • 
    class Program
        {
            static void Main(string[] args)
            {
                HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.studyofnet.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();
            }
        }
    		
  •  

    HttpWebResponse通用辅助类

  •  
  • C# 代码   复制
  • 
     using System;   
     using System.Collections.Generic;   
     using System.Linq;   
     using System.Text;   
     using System.Net.Security;   
     using System.Security.Cryptography.X509Certificates;   
     using System.DirectoryServices.Protocols;   
     using System.ServiceModel.Security;   
     using System.Net;   
     using System.IO;   
     using System.IO.Compression;   
     using System.Text.RegularExpressions;   
     
    
    namespace Cang   
     {   
         /// <summary>   
         /// 有关HTTP请求的辅助类   
         /// </summary>   
         public class HttpWebResponseUtility   
         {   
             private static readonly string DefaultUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";   
             /// <summary>   
             /// 创建GET方式的HTTP请求   
             /// </summary>   
             /// <param name="url">请求的URL</param>   
             /// <param name="timeout">请求的超时时间</param>   
             /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>   
             /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>   
             /// <returns></returns>   
             public static HttpWebResponse CreateGetHttpResponse(string url,int? timeout, string userAgent,CookieCollection cookies)   
             {   
                 if (string.IsNullOrEmpty(url))   
                 {   
                     throw new ArgumentNullException("url");   
                 }   
                 HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;   
                 request.Method = "GET";   
                 request.UserAgent = DefaultUserAgent;   
                 if (!string.IsNullOrEmpty(userAgent))   
                 {   
                     request.UserAgent = userAgent;   
                 }   
                 if (timeout.HasValue)   
                 {   
                     request.Timeout = timeout.Value;   
                 }   
                 if (cookies != null)   
                 {   
                     request.CookieContainer = new CookieContainer();   
                     request.CookieContainer.Add(cookies);   
                 }   
                 return request.GetResponse() as HttpWebResponse;   
             }   
             /// <summary>   
             /// 创建POST方式的HTTP请求   
             /// </summary>   
             /// <param name="url">请求的URL</param>   
             /// <param name="parameters">随同请求POST的参数名称及参数值字典</param>   
             /// <param name="timeout">请求的超时时间</param>   
             /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>   
             /// <param name="requestEncoding">发送HTTP请求时所用的编码</param>   
             /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>   
             /// <returns></returns>   
             public static HttpWebResponse CreatePostHttpResponse(string url,IDictionary<string,string> parameters,int? timeout, string userAgent,Encoding requestEncoding,CookieCollection cookies)   
             {   
                 if (string.IsNullOrEmpty(url))   
                 {   
                     throw new ArgumentNullException("url");   
                 }   
                 if(requestEncoding==null)   
                 {   
                     throw new ArgumentNullException("requestEncoding");   
                 }   
                 HttpWebRequest request=null;   
                 //如果是发送HTTPS请求   
                 if(url.StartsWith("https",StringComparison.OrdinalIgnoreCase))   
                 {   
                     ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);   
                     request = WebRequest.Create(url) as HttpWebRequest;   
                     request.ProtocolVersion=HttpVersion.Version10;   
                 }   
                 else  
                 {   
                     request = WebRequest.Create(url) as HttpWebRequest;   
                 }   
                 request.Method = "POST";   
                 request.ContentType = "application/x-www-form-urlencoded";   
                    
                 if (!string.IsNullOrEmpty(userAgent))   
                 {   
                     request.UserAgent = userAgent;   
                 }   
                 else  
                 {   
                     request.UserAgent = DefaultUserAgent;   
                 }   
       
                 if (timeout.HasValue)   
                 {   
                     request.Timeout = timeout.Value;   
                 }