Ich sehe viele Beispiele, aber alle lesen sie langsam in Byte-Arrays oder 256 Zeichen gleichzeitig ein. Warum?
Ist es nicht ratsam, den resultierenden Stream
Wert einfach in eine Zeichenfolge zu konvertieren, in der ich ihn analysieren kann?
c#
.net
string
httpwebresponse
Joan Venge
quelle
quelle
User-Agent
.<a href=
anstelle der alten, die es gab<A href=
. Das hängt immer noch mit der Codierung zusammen, oderUser-Agent
denkst du?WebClient
undHttpWebRequest
verwenden Sie rohes HTTP ohne Browser. Wenn verschiedene Browser unterschiedliche Ansichtsquellen anzeigen , liegt einUser-Agent
Problem vor.Sie können verwenden
StreamReader.ReadToEnd()
,using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); }
quelle
StreamReader
nimmt zweiten ParameterEncoding.UTF8
.GetResponse and GetResponseStream
kann AusnahmenWie @Heinzi erwähnte, sollte der Zeichensatz der Antwort verwendet werden.
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(); }
quelle
Richard Schneider hat recht. Verwenden Sie den folgenden Code, um Daten von einer Site abzurufen, die kein utf8-Zeichensatz ist. Dadurch wird eine falsche Zeichenfolge angezeigt.
using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); }
"Ich kann nicht wählen. Also schrieb ich das.
quelle
Sie können einen
StreamReader
Stream erstellen und dann aufrufenStreamReader.ReadToEnd()
.StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); var responseData = responseReader.ReadToEnd();
quelle