当尝试从 Hitbox API 获取数据时,我得到了一个奇怪的结果。对于一个 API 的命令,这种情况每次都会发生,而对于另一个 API 的命令,这种情况只是有时发生。结果或多或少是这样的(这是我得到的最后结果):
\u001f�\b\0\0\0\0\0\0\u0003콋w�8������s�μmu�~��s��N�t&��N�g6��C ��Ͷ$z%9igf��[(�\u0005�\u000f��(:�6����\u000f\b P�C\u0015\n�\u007f�V�\u007f�d�� h����2_�&��Nj,����S������q�\u0017�7��\u0019�S�kP ���|^���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���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))/���uc�3�\
它要长得多,但复制全部内容(大约 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/ http://developers.hitbox.tv/
我尝试从中获取数据的链接是:https://api.hitbox.tv/media/live/list https://api.hitbox.tv/media/live/list
响应是 GZIPped 的(即使这不是由Accept-Encoding
请求中的标头,因此从技术上讲这是服务器上的错误)。
您的第二个示例可以通过在触发请求之前添加以下行来修复:
request.AutomaticDecompression = DecompressionMethods.GZip;
这应该给你你需要的一切 https://stackoverflow.com/questions/9242472/retrieve-json-data-with-httpclient找出如何解压缩响应HttpClient
版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)