Я конвертирую код из HttpWebRequest
в HttpClient
. Одна из проблем, с которой я столкнулась, - это получить кодировку из заголовка ответа типа содержимого.
При использовании 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
также имеет свойство Headers, которое, как представляется, содержит заголовок типа содержимого, но этот заголовок показывает "Content-Type: text/html"
- он не имеет части charset.
Используя первый подход с HttpWebResponse
для одного и того же URL-адреса, я получаю часть кодировки заголовка Content-Type. Я что-то пропустил?