奇怪的HttpClient结果

当试图从Hitbox API获取数据时,我得到一个奇怪的结果。 对于一个API的命令,它每次都会发生,有时只发生另一个。 结果或多或少那样(这是我得到的最后一个结果):

\ u001f \ B \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ U0003콋w8sΜmu〜SNT&Ng6C Ͷ$ z%9igf [( \u0005 \u000f (: 6 \ u000f \bP C\ u0015 \n \u007f V \u007f d h2_&nj,呎\ u00177 \ u0019 SKP | ^ w9w2 \u06054Ƿ&\u0015ƛXo\ u0014 [二\ u0011onVP \ u0005e \ u000e \u05ca l / ⇝ % u u s = w z\u0003 a SR, s 1 ůdž 2~.6\u0006T> fR l ( \u0017 GHoV &/ m# '\u0013 C N/ E|Q \u0012 3+ 6\u0003z\u0012 q> { _ eW 7\u0016 rsIw\u0012\u0018&\u0017 V \u000f Ŀ\u001f e \u0002A Zg U\u0006 \\g\u0015 VP u.E8Hj u0015 VP u.E8Hj LA /͋ | ; xk \ u001eǣZ\ 3y \ u00019 \u0017 ī\u0002 ڜ u O] v XA { \u0004 K lo\u0016 %t \u0006 <{ ̆O = \ u0017 \ u0017 \ u0015%$G \“Oϡ \u007f ^̹hH q 8 \u0001 6 \u0015 y { S 4+ pb-\\eI bB]^ \u001f { jՊx \u0004 \u0001 º QD \ u001eK \ u0001; \ u0002 + Y ! \a \u001a (()>e ש r0T? \u001f Q 5t R \ u0005 \ u001f( l\u0013 \ v \ R- \ nU的?߭_&L> \ R0(N4))/ UC3 \ <U \ u0013 \ u001f \u0002ȱ^ N6ד克/'ͧrP\ u001f \ f4y〜\ u0005 = V3 \ u001c; k \ U0002}'M \ u001ccoG_ \ u0003b 4`

它要长得多,但复制它(大约30000个字符)是没有意义的。

我用来获取json结果的代码是:

 string result; using (var client = new HttpClient()) { client.BaseAddress = new Uri(hitboxApiLink); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); HttpResponseMessage response = client.GetAsync(requestString).Result; result = response.Content.ReadAsStringAsync().Result; } return result; 

我以前用过这个:

 HttpWebRequest request = (HttpWebRequest) WebRequest.Create(Path.Combine(hitboxApiLink, requestString)); request.KeepAlive = false; request.ContentType = "application/json; charset=utf-8"; WebResponse response = request.GetResponse(); using(StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { result = reader.ReadToEnd(); } 

它返回相同的。 但是,当我尝试使用Google Chrome或Internet Explorer获取数据时,它会返回正常结果。 api是: http : //developers.hitbox.tv/

我尝试从中获取数据的链接是: https : //api.hitbox.tv/media/live/list

响应是GZIPped(即使请求中的Accept-Encoding标头未指定,因此从技术上讲,这是服务器上的错误)。

您可以通过在触发请求之前添加以下行来修复您的第二个示例:

 request.AutomaticDecompression = DecompressionMethods.GZip; 

这应该为您提供了解如何解压缩HttpClient版本响应所需的一切 。