Я вижу много примеров, но все они медленно читают их в байтовые массивы или 256 символов за раз. Почему?
Разве не желательно просто преобразовать полученное Stream
значение в строку, где я могу его проанализировать?
c#
.net
string
httpwebresponse
Джоан Венге
источник
источник
User-Agent
.<a href=
того, что было раньше<A href=
. Это все еще связано с кодировкой илиUser-Agent
вы думаете?WebClient
иHttpWebRequest
использовать чистый HTTP без участия браузера. Если в разных браузерах отображаются разные источники просмотра , этоUser-Agent
проблема.Вы можете использовать
StreamReader.ReadToEnd()
,using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); }
источник
StreamReader
принимает второй параметрEncoding.UTF8
. Не заметил этого сначала при просмотре документации MSGetResponse and GetResponseStream
может выдавать исключенияКак упомянул @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(); }
"Я не могу голосовать. Так написал это.
источник
Можно создать
StreamReader
вокруг ручья, потом позвонитьStreamReader.ReadToEnd()
.StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); var responseData = responseReader.ReadToEnd();
источник