当前位置: 首页 > 面试题库 >

如何从PHP中的Stackoverflow API读取GZIP版本的响应?

常心水
2023-03-14
问题内容

如何从PHP中的Stackoverflow API中读取响应?响应为GZIP版本。我发现例如以下建议:

$url = "http://api.stackoverflow.com/1.1/questions/" . $question_id;
$data = file_get_contents($url);
$data = http_inflate($data);

但是该功能http_inflate()在我正在使用的安装上不可用。

还有其他简单的方法可以实现它吗?


问题答案:

一种很酷的方法
http://www.php.net/manual/zh/wrappers.compression.php

注意使用流包装 compress.zlib

$url = "compress.zlib://http://api.stackoverflow.com/1.1/questions/" . $question_id; 
echo $data = file_get_contents($url, false, stream_context_create(array('http'=>array('header'=>"Accept-Encoding: gzip\r\n"))));

或使用卷曲

$ch = curl_init();
curl_setopt_array($ch, array(
    CURLOPT_URL => $url
  , CURLOPT_HEADER => 0
  , CURLOPT_RETURNTRANSFER => 1
  , CURLOPT_ENCODING => 'gzip'
));
echo curl_exec($ch);

编辑-其他方法已删除,因为它们不发送Accept-Encodinghttp标头。



 类似资料:
  • 问题内容: 我刚刚在python上做了gzip的摘要。 而且我在屏幕上没有任何输出。作为python的初学者,我想知道如果要读取gzip文件中文件的内容该怎么办。谢谢。 问题答案: 尝试像这样通过gzip库压缩一些数据… …然后按照发布的代码运行… 这种方法对我有用,因为某些原因,gzip库无法读取某些文件。

  • 问题内容: 我在C 项目的资源中有一个版本资源,其中包含版本号,版权和构建详细信息。有一种简单的方法可以在运行时访问它,以填充我的“帮助/关于”对话框,因为我当前正在维护此信息的单独的const值。理想情况下,该解决方案应适用于Windows / CE移动版和Visual C 的早期版本(6.0或更高版本)。 问题答案: 这是我原始答案的编辑版本。

  • 我收到了以下回复:HTTP/1.1 200确定日期:2016年4月11日星期一10:36:10 GMT内容处置:附件;filename=结果。xml;x-xss-防护:1;mode=access Keep Alive:timeout=5,max=100我想从头文件中读取文件名,如何使用正则表达式捕获这个值?

  • 我创建了一个反向代理,如下所示: 并从main调用它: 它在客户端可以正常工作,但是我想阅读代理的响应,我怎么做?

  • 我想做什么(在控制器中) 接收请求,根据该请求 发送外部HTTP请求 解析响应,并基于此 回复 我计划有多个函数都遵循这个模式。他们一个接一个地被召唤。 Symfony 4.3引入了HttpClient组件和BrowserKit组件,乍一看似乎符合要求。但事实证明,事情变得更加复杂。外部HTTP请求被发送到一个服务器,该服务器使用cookie跟踪会话,这应该不会太不寻常。如果发送请求时没有cook

  • 问题内容: 我有两个Python脚本。一种使用Urllib2库,另一种使用Requests库。 我发现请求更容易实现,但是找不到urlib2的等效函数。例如: 建立完发布网址后,请给我内容-我正尝试连接到vcloud Director api实例,并且响应显示了我有权访问的端点。但是,如果我按以下方式使用请求库.... .... the和不返回任何内容,即使请求后调用中的状态代码等于200。 为什