Как преобразовать WebResponse.GetResponseStream в строку?

Я вижу много примеров, но все они читают их в байтовые массивы или 256 символов за раз, медленно. Почему?

Не рекомендуется ли просто преобразовывать полученное значение Stream в строку, где я могу его проанализировать?

Ответ 1

Вы должны создать StreamReader вокруг потока, а затем вызвать ReadToEnd.

Вместо этого вы должны называть WebClient.DownloadString.

Ответ 2

Вы можете использовать StreamReader.ReadToEnd(),

using (Stream stream = response.GetResponseStream())
{
   StreamReader reader = new StreamReader(stream, Encoding.UTF8);
   String responseString = reader.ReadToEnd();
}

Ответ 3

Как отметил @Heinzi, следует использовать набор символов ответа.

        var encoding = response.CharacterSet == ""
            ? Encoding.UTF8
            : Encoding.GetEncoding(response.CharacterSet);

        using (var stream = response.GetResponseStream())
        {
            var reader = new StreamReader(stream, encoding);
            var responseString = reader.ReadToEnd();
        }

Ответ 4

Ричард Шнайдер прав. используйте код ниже для извлечения данных с сайта, который не является кодировкой utf8, получит неправильную строку.
using (Stream stream = response.GetResponseStream())
{
   StreamReader reader = new StreamReader(stream, Encoding.UTF8);
   String responseString = reader.ReadToEnd();
}

" Я не могу голосовать. Так написал это.

Ответ 5

Вы можете создать StreamReader вокруг потока, а затем вызвать StreamReader.ReadToEnd().

StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
var responseData = responseReader.ReadToEnd();