Я вижу много примеров, но все они медленно читают их в байтовые массивы или 256 символов за раз. Почему?
Разве не желательно просто преобразовать полученное Stream
значение в строку, где я могу его проанализировать?
Я вижу много примеров, но все они медленно читают их в байтовые массивы или 256 символов за раз. Почему?
Разве не желательно просто преобразовать полученное Stream
значение в строку, где я могу его проанализировать?
Ответы:
Вы должны создать StreamReader
вокруг ручья, затем позвонить ReadToEnd
.
WebClient.DownloadString
Вместо этого вам следует подумать о том, чтобы позвонить .
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
. Не заметил этого сначала при просмотре документации MS
GetResponse 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();
}
"Я не могу голосовать. Так написал это.