当试图从Hitbox API获取数据时,我得到一个奇怪的结果.对于一个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 <N〜YoVY\u0018M> SKP | ^ w9w2 \u06054Ƿ&\u0015ƛXo\ u0014 [二\ u0011onVP\u0005e\u000e \u05ca l/ ⇝ % u u s =
w??z\u0003?a????SR,???s?1????????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?k LA /͋ | ; xk\u001e ǣZ \3y \u00019 \u0017 ī\u0002 u O] v XA { \u0004 K lo\u0016 %吨\ u0006 <{O =\u0017\u0017\u0015%$ G \"Oϡ\ u007f ^̹hHq8\ u00016\u0015y {??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- \n U?߭_ &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;
Run Code Online (Sandbox Code Playgroud)
我之前用过这个:
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();
}
Run Code Online (Sandbox Code Playgroud)
它返回相同的.但是,当我尝试使用Google Chrome或Internet Explorer获取数据时,它会返回正常结果.api是:http://developers.hitbox.tv/
我尝试从中获取数据的链接是:https://api.hitbox.tv/media/live/list
spe*_*der 11
响应是GZIPped(即使Accept-Encoding请求中的头没有指定,因此技术上是服务器上的错误).
您可以通过在触发请求之前添加以下行来修复您的第二个示例:
request.AutomaticDecompression = DecompressionMethods.GZip;
Run Code Online (Sandbox Code Playgroud)
这应该为您提供了解如何解压缩版本响应所需的一切HttpClient.