HttpClient создает исключение System.ArgumentException: "windows-1251" не является поддерживаемым именем кодировки

Я пишу приложение WinPhone 8.1. Код очень прост и работает в большинстве случаев:

string htmlContent;
using (var client = new HttpClient())
{
    htmlContent = await client.GetStringAsync(GenerateUri());
}
_htmlDocument.LoadHtml(htmlContent);

Но иногда исключение бросается на

htmlContent = await client.GetStringAsync(GenerateUri());

InnerException {System.ArgumentException: 'windows-1251' не является поддерживаемым именем кодировки. Имя параметра: имя в System.Globalization.EncodingTable.internalGetCodePageFromName(имя строки) в System.Globalization.EncodingTable.GetCodePageFromName(имя строки)
в System.Net.Http.HttpContent.<>c__DisplayClass1.b__0(Задача)} System.Exception {System.ArgumentException}

Поддерживает ли HttpClient кодирование 1251? И если это не так, как я могу избежать этой проблемы? Или это проблема целевой страницы? Или я в чем-то не прав?

1 ответ

Решение

Получите ответ как IBuffer а затем конвертировать, используя классы кодирования.NET:

HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(uri);
IBuffer buffer = await response.Content.ReadAsBufferAsync();
byte[] bytes = buffer.ToArray();

Encoding encoding = Encoding.GetEncoding("windows-1251");
string responseString = encoding.GetString(bytes, 0, bytes.Length);
Другие вопросы по тегам