当尝试从Hitbox API获取数据时,我得到一个奇怪的结果。对于一个API的命令,它每次都会发生,有时只发生在另一个API上。结果或多或少那样(这是我得到的最后一个结果):
\ u001f \ B \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ U0003콋w8sΜmu〜SNT&安培; N g6 C Ͷ$ z%9igf [( \u0005 \u000f (: 6 \ u000f \bP C\ u0015 \n \u007f V \ u007f dh2_&安培;nj,呎\ u00177 \ u0019< N〜YoVY \ u0018M&GT ; SKP | ^ w9w2 \u06054Ƿ&安培; \u0015ƛXo\ u0014 [6瓦特\ u0011onVP \ u0005e \ u000e \ u05cal /⇝%UUS = K
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�
LA /͋|; XK \u001eǣZ\ 3Y \ u00019 \u0017ī\ U0002ڜUO】v XA {\ u0004Klo \ u0016%T \ u0006< {O = \ u0017 \ u0017 \ u0015%$ G \“Oϡ\ u007f ^̹hHq8\ u00016 \ u0015y {��S��4+�pb-\\eI�bB]^
\ {u001fĴՊX \ U0004 \u0001ºQD\ u001eK \ U0001; \ U0002 + Y ! \a \u001a (()>e ש r0T? \u001f Q 5t R \ u0005 \ u001f( 升\ u0013符\ v \ R- \ nU的߭_&安培; L> \ R0(N4))/ UC3 \< U \ u0013 \ u001f \u0002ȱ^ N6ד克/'ͧrP\ u001f \ f4y〜\ u0005 = V3 \ u001c; k \ U0002}'M \ u001ccoG_ \ u0003b4`
它要长得多,但复制所有内容(约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
答案 0 :(得分:10)
响应是GZIPped(即使请求中的Accept-Encoding
标头未指定,因此从技术上讲,服务器上存在故障)。
您可以通过在触发请求之前添加以下行来修复您的第二个示例:
request.AutomaticDecompression = DecompressionMethods.GZip;
这应该让你everything you need找出如何解压缩HttpClient
版本的响应。