Я вижу много примеров, но все они медленно читают их в байтовые массивы или 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();
}
"Я не могу голосовать. Так написал это.