通过curl从url获取JSON数据

时间:2013-07-31 00:54:56

标签: php curl

我试图通过curl连接从url获取JSON数据。当我打开链接时:它显示{"版本":" N / A","成功":true,"状态":true }。
现在,我希望获得更多内容。

到目前为止,我已经使用了这个:

$loginUrl = 'http://update.protect-website.com/index.php?plugin=firewall&action=getVersion';
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$loginUrl);
$result=curl_exec($ch);
curl_close($ch);
var_dump(json_decode($result));

但是,我总是得到NULL,有人知道哪里出错了吗?

3 个答案:

答案 0 :(得分:5)

网站检查用户代理。添加代理选项,它将起作用。

$loginUrl = 'http://update.protect-website.com/index.php?plugin=firewall&action=getVersion';
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL,$loginUrl);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
$result=curl_exec($ch);
curl_close($ch);
var_dump(json_decode($result));

答案 1 :(得分:1)

您获得NULL,因为json_decode无法解析返回的字符串。

来自文档:

  

返回值   ...如果无法解码json,则返回NULL   或者如果编码数据比   递归限制。

尝试转储$ result变量以查看它的外观。它可能是CURLOPT_HEADER = true,在这种情况下,标题会使响应无效JSON。

编辑:检查您的API端点后,它似乎是有效的JSON。虽然这不会影响您的具体问题,但您应该设置Content-Type:application / json标题。

答案 2 :(得分:-1)

curl_setopt($ch, CURLOPT_HEADER, 0);