我试图通过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,有人知道哪里出错了吗?
答案 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);