C#/ Почему Get html возвращает случайные ненужные символы?

У меня есть это для бывших: ссылка

Этот код:

const String nick = "Alex";
const String log = "http://demonscity.combats.com/zayavka.pl?logs=";
foreach (DateTime cd in dateRange)
{
string str = log + String.Format("{0:MM_dd_yy}", cd.Date) + "&filter=" + nick;
String htmlCode = wc.DownloadString(str);
}

возвращает что-то...."‹\b\0\0\0\0\0\0я•XYs ЫЦ~зЇёѕ™d)b г.т BҐ$Ъ R † '<2У N&с h@р' „\f\0J–—_Фџђ§¤н t|г6ќѕУЄђ0'IQt Тґcμо№X(jі-Щ/Ђі|? г `yҐ¶ц"

Другие ссылки работают нормально. Я думаю, что проблема с кодовой страницей, как я могу это исправить? Или это проблема с сервером?

2 ответа

Решение

Проблема в том, что ответ GZip-сжат (ответ имеет Content-Encoding: gzip заголовок). Вам нужно сначала распаковать его, затем вы сможете прочитать:

public class Stackru_6660689
{
    public static void Test()
    {
        WebClient wc = new WebClient();
        Encoding encoding = Encoding.GetEncoding("windows-1251");
        byte[] data = wc.DownloadData("http://demonscity.combats.com/zayavka.pl?logs=08_07_11&filter=Alex");
        GZipStream gzip = new GZipStream(new MemoryStream(data), CompressionMode.Decompress);
        MemoryStream decompressed = new MemoryStream();
        gzip.CopyTo(decompressed);
        string str = encoding.GetString(decompressed.GetBuffer(), 0, (int)decompressed.Length);
        Console.WriteLine(str);
    }
}

Я думаю, что он возвращает результат в формате gzip, чего не должно быть, если клиент явно не примет формат.

Другие вопросы по тегам