HttpWebResponse Headers和GetResponseHeader之间的区别

时间:2012-06-11 17:27:02

标签: c#

当我有一个HttpWebResponse对象时,有两种方法可以访问响应头:

string dateHeader = webResponse.Headers["Date"];
string dateHeader = webResponse.GetResponseHeader("Date");

它们都返回相同的值,那么为什么有两种方法来获取标题信息? 查看.NET源代码,如果在HttpWebReponse中找到了两者的实现:

    // retreives response header object 
    /// <devdoc>
    ///    <para> 
    ///       Gets 
    ///       the headers associated with this response from the server.
    ///    </para> 
    /// </devdoc>
    public override WebHeaderCollection Headers {
        get {
            CheckDisposed(); 
            return m_HttpResponseHeaders;
        } 
    } 

    /// <devdoc>
    ///    <para> 
    ///       Gets a specified header value returned with the response.
    ///    </para> 
    /// </devdoc> 
    public string GetResponseHeader( string headerName ) {
        CheckDisposed(); 

        string headerValue = m_HttpResponseHeaders[headerName];

        return ( (headerValue==null) ? String.Empty : headerValue ); 
    }

我唯一能看到的是,通过Headers属性,我可以枚举所有可用的标题。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

根据MSDN libraryHeaders属性是所有标头的WebHeaderCollection。由于它是一个集合,因此对于访问多个标题的名称,值或两者都很有用。它还可以通过以Header[<name>]格式指示名称来访问单个标头的值。

另一方面,

GetResponseHeader()是一种仅返回单个值的方法。

总之,差异是:

  1. 财产与方法
  2. 多个标头名称和/或值访问权限与单个标头值访问权限