首页 文章

c#如何遍历HttpRequestHeaders的所有头文件

提问于
浏览
0

我想遍历 HttpRequestMessageHttpRequestHeaders 的所有 Headers .

我只是将我的代码从 HttpWebRequest 迁移到 HttpClient . 使用 HttpWebRequest 我使用以下代码循环其 WebHeaderCollection

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

HttpRequestHeaders 没有AllKeys方法 . 它只有 GetValues(string name) ,它只检索一个指定的 Headers .

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")
}

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

1 回答

  • 0

    由于标头是HttpRequestHeaders类的属性,因此您需要反射来枚举它们,这里是一个枚举标头的代码片段 .

    var headers = new HttpClient().DefaultRequestHeaders;
    
    PropertyInfo[] properties = headers.GetType().GetProperties();
    foreach (var property in properties)
          Console.WriteLine(property.Name);
    

相关问题