当我在 C# 中发出 HTTP 请求并读取响应时,我在响应中收到垃圾数据。我无法弄清楚问题所在。考虑以下示例片段,其中我调用了 Stack Exchange API。
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");
}
下面的屏幕截图说明了我收到的垃圾输出:

我很感激在尝试调试这个问题并知道我哪里出错了的任何帮助。
问题是数据被压缩了。
要修复它,而不必自己解压缩数据,请指示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,...
这也记录在案:
此外,所有 API 响应都经过压缩。
| 归档时间: | 
 | 
| 查看次数: | 700 次 | 
| 最近记录: |