2011-09-25 25 views

答えて

57

ストリームの周りにStreamReaderを作成してから、ReadToEndを呼び出す必要があります。

代わりにWebClient.DownloadStringを呼び出すことを検討する必要があります。

+1

感謝のSLaksを、今DownloadStringをチェックする。実際に私はそれがWinformsのを使用してbrowser.DocumentStreamを使用しています私の昔のアプリと比べて異なるソースコードの文字列をgettngい

using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); } 

」 ブラウザの制御あなたはDownloadStringがそれを修正すると思いますか?簡単なことではない場合、新しい質問を作成することができます –

+5

エンコードの問題があるか、 'User-Agent'を設定する必要があります – SLaks

+0

Thanks SLaks、あなたが正しいと思うのですが、結果は若干異なり、違いはありませんが、古いものの代わりに '

118

あなたがStreamReader.ReadToEnd()を呼び出して、ストリームの周りStreamReaderを作成することができますStreamReader.ReadToEnd()

using (Stream stream = response.GetResponseStream()) 
{ 
    StreamReader reader = new StreamReader(stream, Encoding.UTF8); 
    String responseString = reader.ReadToEnd(); 
} 
+1

驚くばかり! XMLの作成と解析が簡単になりました。 –

+1

@FaizanMubasher - 私はLINQ To XMLを提案したいと思います。 – adatapost

+2

「StreamReader」は2番目のパラメータである 'Encoding.UTF8'を使用しています。最初にMSのマニュアルを見ているうちに気付かなかった – newprint

2

を使用することができます。

StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); 
var responseData = responseReader.ReadToEnd(); 
4

@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(); 
} 
+0

これは受け入れられる回答である必要があります。 –

3

リチャードシュナイダーが正しい。 utf8の文字セットではないサイトからデータを取得するために以下のコードを使用すると、間違った文字列が返されます。私はvote.soこれを書いたことはできません。

関連する問題