C # Как мне перебрать все заголовки HttpRequestHeaders - PullRequest
0 голосов
/ 09 декабря 2018

Я хочу перебрать все заголовки HttpRequestHeaders из HttpRequestMessage.

Я только что перенес свой код с HttpWebRequest на HttpClientHttpWebRequest я использовал следующий код, чтобы перебрать его 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), который извлекает только один указанный заголовок.

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"} из requestMessage

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Хорошо, это было проще, чем я ожидал.

foreach (var header in httpRequestMessage.Headers)
{
    string headerName = header.Key;
    string headerContent = string.Join(",", header.Value.ToArray());
}
0 голосов
/ 10 декабря 2018

Поскольку заголовки - это свойства класса HttpRequestHeaders, для их перечисления необходимо отражение, здесь фрагмент кода, который перечисляет заголовки.

var headers = new HttpClient().DefaultRequestHeaders;

PropertyInfo[] properties = headers.GetType().GetProperties();
foreach (var property in properties)
      Console.WriteLine(property.Name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...