当前位置: 首页 > 知识库问答 >
问题:

奇怪的HttpClient结果

龚远
2023-03-14

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

\U001F\B\0\0\0\0\0\U0003W8SμMU~S N T&N G6C$Z%9IGF[(\U0005\U000F(:6\U000F\B P C\U0015\N\U007F V\U007F D H2_&,S Q\U00177\U0019 S KP^)W9W2\u06054&\u0015XO\u0014[6W\u0011onVP\u0005E\u000E\u05CAL/%U U S=K WZ\u0003ASR,S1è2~.6\u0006T>FR L(\u0017Ghav&/M#'\u0013CN/EQ\u0012 3+6\u0003z\u0012q>{_EW7\u0016rsiw\u0012\u0018&\u0017v\u000f\u001f e\u0002a zg u\u0006\\g\u0015vpu.e8hjla/;xk\u001e z\3y\u00019\u0017\u0002uo]vxa{\u0004k L.O\U 0016%T\U 0006<{O=\u0017\u0017\u0015%$G\“O\U 007 F^HH Q8\u00016\u0015 Y{ S4+PB-\\ei BB]^\u001 F{J X\u0004\u0001èqd\u001ek\u0001;\u0002+Y!\A\u001 A(()>E R 0 T?\u00001 1 f q 5 t r\u0005\u001f(L\u0013\v\r-\n u?_&l>\r0(N4))/uC3\

它要长得多,但复制所有的内容(大约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个答案

宋俊民
2023-03-14

响应是GZIPped的(尽管请求中的accept-encoding标头没有指定这一点,所以从技术上讲是服务器上的错误)。

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

request.AutomaticDecompression = DecompressionMethods.GZip;

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

 类似资料:
  • 我有一个程序可以读取两个文件(“incompleta.txt”和“completa.txt”),并比较两个文件中是否有相同的名称。其工作原理如下: 它将“completa.txt”中的所有名称存储在ArrayList中 问题是我的“lista.txt”看起来像这样:Image 第二条线完全是混乱和扭曲的。 我的Java代码:

  • 我使用Oracle11g(在Red Hat上)。我有一个带有XMLType列的简单常规表: 我使用Oracle SQL Developer(在Windows上): 很管用。我只有一个牢房。我可以双击并下载整个XML文件。 然后我试图以CLOB的形式得到结果: 很管用。我只有一个牢房。我可以双击并看到整个文本和复制它。但有个问题。当我把它复制到剪贴板时,我只得到前4000个字符。似乎在4000位置有

  • 我正在弄乱我的DataDroid库,新的lint检查显示Android软件开发工具包中有一个奇怪的错误。 对于那些不了解DataDroid的人来说,它是一个用于本地和远程数据管理的库(更多信息请参见:http://datadroid.foxykeep.com) 为了调用库中的Web服务,我使用AndroidHttpClient类与NetworkConnection类中的服务器建立连接。我的程序库适

  • 问题内容: 我现在对Java左移操作有些困惑, 但 看起来像是更多的偏移值,该值的模数为32。 感谢大家对JLS的答复和报价。 我只想知道更多。是否知道以这种方式进行设计的原因?还是只是一些约定?显然C没有这个怪癖? 感谢@paxdiablo。看起来C声明了未定义的行为。 我在这里有一些个人假设: ARM体系结构参考手册A7.1.38 语法LSL Rd,Rm,#immed_5 哪里: Rd 是存储

  • 问题内容: 我有这样的事情: 我希望它会在文本区域中显示“ hello 0”,等待1秒,然后显示“ hello 1”,然后等待1秒,依此类推。 但是发生的情况有所不同,它等待5秒钟,然后显示“ hello 4”。 任何想法? 问题答案: 是的-您基本上是在阻止UI线程,因此永远不会回避实际更新。 在UI线程中休眠是一个非常糟糕的主意。 如果您想执行类似的操作,则应使用。(我假设您正在使用Swing

  • 我正在使用Weka Gui-Explorer,我想根据类{男性,女性}对我的数据进行分类。我使用MultiBoostAB分类器,以REPTree分类器为基础。我正在尝试使用训练集(557个实例)评估我的分类器的准确性 然后是一个具有大约300个属性的测试集(200个实例)。准确率83,5% - 167从200个实例中正确分类,kappa统计量为0,67。我保存了这个模型,并用它来预测 其他未知数据