我想遍历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”}?
答案 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());
}