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 Stream
valor 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 Stream
valor resultante en una cadena donde pueda analizarlo?
Respuestas:
Deberías crear un StreamReader
alrededor de la corriente, luego llamarReadToEnd
.
Debería considerar llamar en su WebClient.DownloadString
lugar.
User-Agent
.
<a href=
lugar del anterior que era <A href=
. ¿Eso todavía está relacionado con la codificación o User-Agent
crees?
WebClient
y HttpWebRequest
use HTTP sin formato sin navegador involucrado. Si diferentes navegadores muestran diferentes Ver fuentes , es un User-Agent
problema.
Puedes usar StreamReader.ReadToEnd()
,
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
StreamReader
ocupa el segundo parámetro Encoding.UTF8
. No me
GetResponse and GetResponseStream
puede 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.