Headers 和 GetResponseHeader 之间的 HttpWebResponse 区别

本文关键字:HttpWebResponse 区别 之间 GetResponseHeader Headers | 更新日期: 2023-09-27 18:36:59

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

谢谢!

Headers 和 GetResponseHeader 之间的 HttpWebResponse 区别

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

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

总之,区别在于:

  1. 属性与方法
  2. 多个标头名称和/或值访问与单个标头值访问