0

当我有一个 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 属性,我可以枚举所有可用的标题。有任何想法吗?

谢谢!

4

1 回答 1

2

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

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

总而言之,区别在于:

  1. 属性与方法
  2. 多个标题名称和/或值访问与单个标题值访问
于 2012-10-04T03:44:43.387 回答