2015-04-07 90 views
3

我想通过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; 
    } 
+0

请[编辑您的问题](http://stackoverflow.com/posts/29486722/edit),并包括**破损的文字**。 – ekad

+1

我没有使用c#,但我已经涉足stackexchange api,并从我的经验,响应是gzip编码。对于我使用的Java客户端,我不得不使用gzip解码器 –

+0

当您找到答案时,不要污蔑您的问题。请[用您的解决方案发布答案​​](http://stackoverflow.com/revisions/29486722/3)。 – CodeCaster

回答

2

如果您GET请求来使用Fiddler这个网址,你会看到响应有一个头:

Content-Encoding: gzip 

这意味着,响应用gzip压缩。好消息是,HttpWebRequest就可以搞定:

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

在添加此行你会得到很好的和可读的JSON。

+0

Idk为什么,但没有为我工作。我使用了RestSharp,现在没关系。谢谢您的帮助。 –

+0

我已经用你的代码测试过它,它工作。但无论如何,我认为使用RestSharp是个好主意。 –

相关问题