2012-02-11 13 views
7

私はVisual Studio 2011用にプログラミングしていますので、私はHttpClientを使用することを余儀なくされています。どのように私はできるようHttpClientでJsonデータを取得する

HttpClient client = new HttpClient(); 
var response = client.Get("http://api.stackoverflow.com/1.1/users"); 
var content = response.Content.ReadAsString(); 

:私はウェブからいくつかのJSONデータを取得する必要がありますが、私はこのコードを使用しているとき、私はいつも奇妙な文字を取得するため、「JSONデータ」か何かにコンテンツを設定する必要があると思いますコンテンツを設定するか、正しいデータを得るために何をすべきですか?

編集:

出力:このような何か:

+0

を理由にHttpClientを使用することができ、「強制」ん? –

+0

Visual Studio 2011のようなものはありません。あなたはVisual Studio 11 Developer Previewを意味しますか? Visual Studioのバージョンでは、 'HttpClient'を使用するよう強制しません。それはどういう意味ですか?あなたはメトロスタイルのアプリを開発していますか? – svick

+0

彼はMetroスタイルのアプリケーションに取り組んでおり、 'WinRT'には' WebClient'クラスがなくなったと思います。 –

答えて

29

問題は応答が圧縮され、HttpClientは、デフォルトで自動的にそれを解凍しないということです。

WebClientとすると、create a derived class and set the AutomaticDecompression of the underlying HttpWebRequestとすることができます。

HttpClientでは、適切なvirtualメソッドがないため、これを行うことはできません。しかし、あなたはそのコンストラクタにHttpClientHandlerを渡すことによってそれを行うことができます。

var client = 
    new HttpClient(
     new HttpClientHandler 
     { 
      AutomaticDecompression = DecompressionMethods.GZip 
            | DecompressionMethods.Deflate 
     }); 
+0

それは魅力のように働いた!! – Kobe

関連する問題