Veo muchos ejemplos, pero todos los leen en matrices de bytes o 256 caracteres a la vez, lentamente. ¿Por qué?
¿No es aconsejable simplemente convertir el Streamvalor resultante en una cadena donde pueda analizarlo?
Veo muchos ejemplos, pero todos los leen en matrices de bytes o 256 caracteres a la vez, lentamente. ¿Por qué?
¿No es aconsejable simplemente convertir el Streamvalor resultante en una cadena donde pueda analizarlo?
Respuestas:
Deberías crear un StreamReaderalrededor de la corriente, luego llamarReadToEnd .
Debería considerar llamar en su WebClient.DownloadStringlugar.
User-Agent.
<a href=lugar del anterior que era <A href=. ¿Eso todavía está relacionado con la codificación o User-Agentcrees?
WebClienty HttpWebRequestuse HTTP sin formato sin navegador involucrado. Si diferentes navegadores muestran diferentes Ver fuentes , es un User-Agentproblema.
Puedes usar StreamReader.ReadToEnd(),
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
StreamReaderocupa el segundo parámetro Encoding.UTF8. No me
GetResponse and GetResponseStreampuede lanzar excepciones
Como mencionó @Heinzi, se debe usar el conjunto de caracteres de la respuesta.
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();
}
Richard Schneider tiene razón. use el código a continuación para obtener datos del sitio que no sea utf8 charset obtendrá una cadena incorrecta.
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
"No puedo votar. Así que escribí esto.