2017-08-23 1 views
0

C#でHTTPリクエストを作成してレスポンスを読むとき、レスポンスにガベージデータがあります。私は問題を把握することができません。私がStack Exchange APIを呼び出す次の例のスニペットを考えてみましょう。C#のHTTPコールが応答内のガベージデータを返しています

HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri("http://api.stackexchange.com/info"); 
client.DefaultRequestHeaders.Accept.Clear(); 
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

HttpResponseMessage response = client.GetAsync("?site=stackoverflow").Result; 

if (response.IsSuccessStatusCode) 
{ 
    Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
} 
else 
{ 
    Console.WriteLine("Sorry"); 
} 

以下のスクリーンショットは、私が受けていますガベージ出力を示しています。私は、この問題をデバッグしようとしていると私は間違っていた場所を知ることに任意の助けをいただければと思います

garbage output from HTTP request

を。

答えて

2

問題は、データが圧縮されていることです。あなたのためにそれを行うにはHttpClientを指示し、データを自分で解凍しなくても、それを修正する

HttpClientHandler handler = new HttpClientHandler() 
{ 
    AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate 
}; 

HttpClient client = new HttpClient(handler); 
// ... rest of your code here 

あなたのコードは、この出力(省略)を与える:

{"items":[{"new_active_users":13,"total_users":7599686,"badges_per_minute":5.04,"total_badges":24036822,... 

これは、またdocumented

さらに、すべてのAPI応答は圧縮されています。

+0

あなたは私の救い主です。 – pratnala

関連する問題