当我有一个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属性,我可以枚举所有可用的标题。有什么想法吗?
谢谢!
答案 0 :(得分:2)
根据MSDN library,Headers
属性是所有标头的WebHeaderCollection。由于它是一个集合,因此对于访问多个标题的名称,值或两者都很有用。它还可以通过以Header[<name>]
格式指示名称来访问单个标头的值。
GetResponseHeader()
是一种仅返回单个值的方法。
总之,差异是: