当尝试从Hitbox API获取数据时,我得到了一个奇怪的结果。对于一个API的命令,它每次都会发生,而对于另一个命令,它只是偶尔发生。结果或多或少是这样的(这是我得到的最后一个结果):
2018年12月28日,中国国际航空航天博览会(以下简称“中国国际航空博览会”)在北京举行,中国国际航空博览会(以下简称“中国国际航空博览会”)将于2018年12月28日在北京举行。��|^��w�9�w2��\u0605�4�\u0015��Xo�\u0014[�6w\u0011onVP\u0005��e\u000e�*�\u05ca�l�/�%�u�u�s�=�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��u�O]v��XA*�{�\u0004�K�l.o\u0016�%t\u0006�<{��O��=�\u0017\u0017\u0015%$G�\“O�\u007f�^�h�q�8�\u0001�6�\u0015�y�{ ��S��4+�pb-\\eI�bB]^
\u001f�{�j�x�\u0004�\u0001�QD�\u001eK\u0001;�\u0002+�Y���\a��\u001a��()>e��r�T?����_����
这是非常长的,但它是毫无意义的复制所有它(约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();
}
它返回相同的。但是当我尝试用谷歌Chrome或Internet Explorer获取数据时,它返回正常结果。API是:http://developers.hitbox.tv/
我尝试获取数据的链接是:https://api.hitbox.tv/media/live/list
1条答案
按热度按时间zxlwwiss1#
响应是GZIPped的(尽管这不是由请求中的
Accept-Encoding
头指定的,所以从技术上讲是服务器上的一个错误)。您的第二个示例可以通过在发出请求之前添加以下行来修复:
这应该给予您everything you need来弄清楚如何验证
HttpClient
版本的响应。