向StackExchange Api发出请求
我想通过url请求JSON格式的StackExchange上的标记列表,但问题是,我得到的是一些破损的文本而不是JSON,所以我甚至无法解析它。向StackExchange Api发出请求
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;
}
如果您GET请求来使用Fiddler这个网址,你会看到响应有一个头:
Content-Encoding: gzip
这意味着,响应用gzip压缩。好消息是,HttpWebRequest
就可以搞定:
request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
在添加此行你会得到很好的和可读的JSON。
Idk为什么,但没有为我工作。我使用了RestSharp,现在没关系。谢谢您的帮助。 –
我已经用你的代码测试过它,它工作。但无论如何,我认为使用RestSharp是个好主意。 –
@peeskillet提到,这看起来像压缩数据。请看看 What is the canonical method for an HTTP client to instruct an HTTP server to disable gzip responses?,特别是this answer。
喜欢的东西
Accept-Encoding: *;q=0
应该有所帮助。
请[编辑您的问题](http://stackoverflow.com/posts/29486722/edit),并包括**破损的文字**。 – ekad
我没有使用c#,但我已经涉足stackexchange api,并从我的经验,响应是gzip编码。对于我使用的Java客户端,我不得不使用gzip解码器 –
当您找到答案时,不要污蔑您的问题。请[用您的解决方案发布答案](http://stackoverflow.com/revisions/29486722/3)。 – CodeCaster