私は多くの例を見ていますが、それらはすべて一度にバイト配列または256文字に読み込まれます。どうして?WebResponse.GetResponseStreamを文字列に変換する方法を教えてください。
結果のStream
の値を解析できる文字列に変換することはお勧めできませんか?
私は多くの例を見ていますが、それらはすべて一度にバイト配列または256文字に読み込まれます。どうして?WebResponse.GetResponseStreamを文字列に変換する方法を教えてください。
結果のStream
の値を解析できる文字列に変換することはお勧めできませんか?
ストリームの周りにStreamReader
を作成してから、ReadToEnd
を呼び出す必要があります。
代わりにWebClient.DownloadString
を呼び出すことを検討する必要があります。
あなたがStreamReader.ReadToEnd()
を呼び出して、ストリームの周りStreamReader
を作成することができますStreamReader.ReadToEnd()
、
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
を使用することができます。
StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
var responseData = responseReader.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の文字セットではないサイトからデータを取得するために以下のコードを使用すると、間違った文字列が返されます。私はvote.soこれを書いたことはできません。
感謝のSLaksを、今DownloadStringをチェックする。実際に私はそれがWinformsのを使用してbrowser.DocumentStreamを使用しています私の昔のアプリと比べて異なるソースコードの文字列をgettngい
」 ブラウザの制御あなたはDownloadStringがそれを修正すると思いますか?簡単なことではない場合、新しい質問を作成することができます –
エンコードの問題があるか、 'User-Agent'を設定する必要があります – SLaks
Thanks SLaks、あなたが正しいと思うのですが、結果は若干異なり、違いはありませんが、古いものの代わりに '