Я конвертирую код с HttpWebRequest
в HttpClient
. Одна из проблем, с которой я столкнулась, - это получить кодировку из заголовка ответа типа содержимого.Является ли кодировка Content-Type не из HttpResponseMessage?
При использовании HttpWebRequest
, кодировка подвергается в HttpWebResponse.CharacterSet
собственности, как этот
using (WebResponse response = await this.webRequest.GetResponseAsync())
{
string characterSet = ((HttpWebResponse)response).CharacterSet;
Вы также можете добраться до него из WebResponse.ContentType
собственности или из заголовка типа содержимого в HttpWebResponse.Headers
.
Использование HttpClient
, кодировка, кажется, отсутствует в заголовке ContentType
.
Вот код, который я использую для HttpClient
:
using (HttpClient httpClient = new HttpClient(httpClientHandler))
{
using (HttpResponseMessage httpResponseMessage = await httpClient.GetAsync(uri, HttpCompletionOption.ResponseContentRead))
{
charset = httpResponseMessage.Content.Headers.ContentType.CharSet;
CharSet свойство всегда null
. HttpResponseMessage
имеет свойство Headers
, но он не содержит заголовка содержимого. HttpResponseMessage.Content
также имеет свойство заголовков, которое, как представляется, содержит заголовок содержимого, но этот заголовок показывает "Content-Type: text/html"
- он не имеет части кодировки.
Используя первый подход с HttpWebResponse
для того же URL-адреса, я получаю часть кодировки заголовка Content-Type. Я что-то упускаю?
Эй, добро пожаловать к переполнению стека. FYI, вы можете печатать такие вещи, как 'HttpResponseMessage', путем добавления их в backticks' '. –