Как получить содержимое httpWebresponse в правильной строковой форме?
Иногда я получаю искаженный ответ от нескольких веб-сайтов.
Вот мой код:
Stream responseStream = response.GetResponseStream();
buffer = new Byte[256];//
int bytesRead;
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
outStream.Write(buffer, 0, bytesRead);
//resp=resp+ .UTF8.GetString(buffer, 0, bytesRead);
resp=resp + Encoding.ASCII.GetString(buffer); //resp is string
}
когда я запрашиваю с www.google.co.in, я получаю следующие символы в соответствующей строке:
? \ Ъ \ 0 \ 0 \ 0 \ 0 \ 0}?? у?F??????????????? Z {7m??? оХ? \ Г? У???33?? д; у???? п 0?
Как мне преодолеть эту проблему? Это связано с кодированием?
2 ответа
Ответ, который я получил, был сжат GZip, поэтому я просто распаковал поток ответов, как показано ниже:
Stream responseStream = response.GetResponseStream();
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);
Теперь можно читать поток, используя код, который я предоставил выше.
@Kalyan Спасибо за вашу помощь!!!
Обратитесь к разделу Как использовать метод GetResponseStream в C#, а также Использование HttpWebResponse и HttpWebRequest для получения идеи о чтении содержимого из HttpWebResponse. Надеюсь, это поможет вам.