3

我正在尝试通过url以 JSON 格式请求 StackExchange 上的标签列表,但问题是,我得到了一些损坏的文本而不是 JSON,所以我什至无法解析它。

PS在 RestSharp 的帮助下完成。

private void Refresh()
    {
        var client = new RestClient("http://api.stackexchange.com/2.2/tags?order=desc&sort=popular&site=stackoverflow");

        var result = client.Execute(new RestRequest(Method.GET));

        var array = JsonConvert.DeserializeObject<Root>(result.Content);

        Platforms = array.Platforms;
    }
4

2 回答 2

2

如果您使用Fiddler向该 URL 发出 GET 请求,您将看到该响应有一个标头:

Content-Encoding: gzip

这意味着响应是用 gzip 压缩的。好消息是HttpWebRequest可以处理:

request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;

添加此行后,您将获得漂亮且可读的 JSON。

于 2015-04-07T08:40:11.903 回答
0

正如@peeskillet 提到的,这看起来像压缩数据。请查看 HTTP 客户端指示 HTTP 服务器禁用 gzip 响应的规范方法是什么?尤其是这个答案

就像是

Accept-Encoding: *;q=0

应该有帮助。

于 2015-04-07T09:11:16.617 回答