c# - 如何获取 HttpResponseHeader 的名称?

标签 c# httpwebrequest http-headers

我能够循环遍历 response.Headers 集合并像这样显示每个 header 的值。

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(postDest);
//Set up the request with needed properties etc.
HttpWebResponse response = req.GetResponse() as HttpWebResponse;    
for(int i= 0; i < response.Headers.Count; i++)
{
      MessageBox.Show(response.Headers[i].ToString());
}

但是我怎样才能得到每个 ResponseHeader 的名称 Field-Name?

更新:

如果我这样做,我就能获得字段名称和值。

    for (int i = 0; i < response.Headers.Count; i++)
    {
        MessageBox.Show("Field-Name is: " + response.Headers.GetKey(i).ToString() + " Value is: " + response.Headers[i].ToString());
    }

最佳答案

为了完整起见,我应该指出您可以只对 WebHeaderCollection 对象本身调用 .ToString()。 (Response.Headers.ToString())。现在我真的不推荐这个,因为官方 MSDN comment在方法上说:

This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.

但是,通过 ILSpy 查看代码,它并没有做任何疯狂的事情,只是在基于 header 的 StringBuilder 中构建名称/值行列表。它确实排除了任何未命名的标题,但我认为这些标题很少见。有趣的是,他们没有麻烦在其上添加一个过时的编译器属性(也许是为了通过他们的单元测试?))所以使用它可能是安全的。但如果您担心这一点,我会推荐问题中发布的解决方案,它使用直接索引。请注意,直接索引比接受的答案中的方法更快,因为它不依赖于字符串键或内部哈希表(并不是说性能可能是该领域的主要问题。)

关于c# - 如何获取 HttpResponseHeader 的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7771646/

相关文章:

swift - 无法随我的请求发送授权 header

c# - 如何在原地行走和过滤一棵树?

c# - 我如何在 C# 中获得特定运算符的函数?

c# - 将控件添加到我的面板时出现异常 - 它们会出现在他们想要的任何地方

c# - HttpWebRequest 仅在 .NET 4.0 上运行

用于读取包含多个文件的 multipart/form-data http 正文的 Java 库

Go 授权 header 未发送

C# 和 Delphi 集成

php - 服务器请求,如何处理?

python - 使用python将图像输出到html