【问题标题】:Response received from a url via php script is smaller than when I open it in browser通过 php 脚本从 url 收到的响应小于我在浏览器中打开它时的响应
【发布时间】:2013-03-02 02:06:32
【问题描述】:

我正在尝试通过脚本获取此网址:http://api.alarabiya.net/sections/2/

但是收到的 JSON 响应比我直接在浏览器中打开时要小得多,

请注意,我通过 CURL 尝试了此 url,并设置了相同的浏览器 USER-AGENT 和浏览器中使用的所有请求标头,但我仍然得到较小的响应。

这是一个仅使用 file_get_contents 的示例

<?php 
    echo file_get_contents("http://api.alarabiya.net/sections/2/");
?>

我的问题是使用 file_get_contents 时是否存在请求大小限制,或者 PHP 的内存是否无法处理,或者究竟是什么问题?

当我在 shell 中将它卷曲时,它给了我与 php 中相同的 o/p(修剪后的输出)。

【问题讨论】:

  • 我可以注意到每次刷新页面时响应都不同,但从来没有得到完整的 json 字符串...对吗?
  • 是的,这就是我得到的

标签: php file-get-contents


【解决方案1】:

我终于找到了解决办法:

$url = "http://api.alarabiya.net/sections/2/";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true );
// This is what solved the issue (Accepting gzip encoding)
curl_setopt($ch, CURLOPT_ENCODING, "gzip,deflate");     
$response = curl_exec($ch);
curl_close($ch);
echo $response;

【讨论】:

  • 你将如何解码?这样做后我使用了 json 解码,但我得到的结果仍然比我的 url 显示的要少。例如,url 显示了 9 个结果对象,使用 json 解码功能后我只得到 3 个?我在这里错过了什么吗?我的最新问题与您使用的设置相同,包括病房后解码。
猜你喜欢
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
相关资源
最近更新 更多