向StackExchange Api提出请求



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

p.S.在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;
    }

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

Content-Encoding: gzip

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

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

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

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

类似的东西

Accept-Encoding: *;q=0

应该会有所帮助。

最新更新