多くの例がありますが、それらはすべて、バイト配列または256文字に一度にゆっくりと読み込みます。どうして?
結果のStream
値を解析可能な文字列に変換することはお勧めできませんか?
ストリームの周りにStreamReader
を作成してから、ReadToEnd
を呼び出す必要があります。
代わりにWebClient.DownloadString
を呼び出すことを検討する必要があります。
StreamReader.ReadToEnd()
を使用できます。
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
@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();
}
「私は投票できない。だからこれを書いた。
ストリームの周りにStreamReader
を作成し、StreamReader.ReadToEnd()
を呼び出すことができます。
StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
var responseData = responseReader.ReadToEnd();