Как получить содержимое httpWebresponse в правильной строковой форме? - PullRequest
0 голосов
/ 27 сентября 2011

Иногда я получаю искаженный ответ от нескольких веб-сайтов.

Вот мой код:

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 я получаюсимволы в соответствующей строке:

? \ b \ 0 \ 0 \ 0 \ 0 \ 0 ??} y? F ????????? Z ?????? {7m ??? oX? \ R? Y ??? 33 ?? d; y ???? n? 0?

Как мне преодолеть эту проблему?Это связано с кодировкой?

Ответы [ 2 ]

6 голосов
/ 28 сентября 2011

Ответ, который я получил, был сжат GZip, поэтому я просто распаковал поток ответов, как показано ниже:

Stream responseStream = response.GetResponseStream();
responseStream = new GZipStream(responseStream, CompressionMode.Decompress);

теперь можно читать поток, используя код, который я предоставил выше.

@ Калян Спасибо за помощь !!!

3 голосов
/ 27 сентября 2011

См. Как использовать метод GetResponseStream в C # , а также Использование HttpWebResponse и HttpWebRequest для получения идеи о чтении содержимого из HttpWebResponse.Надеюсь, это поможет вам.

...