c# 如何循环遍历 HttpRequestHeaders 的所有标头

Luk*_*741 6 .net c# header

我想循环遍历HttpRequestHeadersof的所有标头HttpRequestMessage

我只是将我的代码从 迁移HttpWebRequestHttpClient. 我使用HttpWebRequest以下代码来循环它WebHeaderCollection

StringBuilder headers_ = new StringBuilder();
foreach (string key in headers.AllKeys)
{
    headers_.Append(key).Append(':').Append(headers[key]).Append(' ');
}
headers_.Length--;
Run Code Online (Sandbox Code Playgroud)

HttpRequestHeaders没有 AllKeys 方法。它只GetValues(string name)检索一个指定的标头。

HttpRequestMessage requestMessage = new HttpRequestMessage
{
    Method = HttpMethod.Post,
    RequestUri = new Uri("https://postman-echo.com/post"),
    Headers = {
        { "header1", "aa" },
        { "header2", "bb" },
    },
    Content = new StringContent("hi=aa")
}
Run Code Online (Sandbox Code Playgroud)

如何以编程方式检索 { "header1", "aa" }, { "header2", "bb" } 对requestMessage

Luk*_*741 11

好吧,这比我想象的要简单。

foreach (var header in httpRequestMessage.Headers)
{
    string headerName = header.Key;
    string headerContent = string.Join(",", header.Value.ToArray());
}
Run Code Online (Sandbox Code Playgroud)