C#如何遍历HttpRequestHeaders的所有标头

时间:2018-12-09 06:17:17

标签: c# .net header

我想遍历HttpRequestHeaders的{​​{1}}的所有标头。

我只是将代码从HttpRequestMessage迁移到HttpWebRequest。 对于HttpClient,我使用以下代码遍历其HttpWebRequest

WebHeaderCollection

但是StringBuilder headers_ = new StringBuilder(); foreach (string key in headers.AllKeys) { headers_.Append(key).Append(':').Append(headers[key]).Append(' '); } headers_.Length--; 没有AllKeys方法。它只有HttpRequestHeaders,只能检索一个指定的标头。

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") } 中以编程方式检索成对的{“ header1”,“ aa”},{“ header2”,“ bb”}?

2 个答案:

答案 0 :(得分:0)

由于标头是HttpRequestHeaders类的属性,因此需要进行反射以枚举它们,此处是枚举标头的代码段。

int* createSharedMemory(size_t size) {
    int protection = PROT_READ | PROT_WRITE;
    int visibility = MAP_ANONYMOUS | MAP_SHARED;
    return (int*)mmap(0, size, protection, visibility, 0, 0);
}

答案 1 :(得分:0)

好的,它比我预期的简单。

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