Как конвертировать WebResponse.GetResponseStream возвращает в строку?


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

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

5 74

5 ответов:

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

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

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

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

Как упоминал @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();
}

Ричард Шнайдер прав. используйте код ниже, чтобы получить данные с сайта, который не является кодировкой utf8, получит неправильную строку.

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

" я не могу ... vote.so написал это.

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

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