我试图通过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
应该会有所帮助。