我正在尝试从Freebase API接收数据。我手动构建了一个有效的API调用,它在我的浏览器中给了我一个有效的JSON响应。所以我写了一个PHP函数,应该完全这样做:
$service_url = 'https://www.googleapis.com/freebase/v1/search';
$params = array(
'filter' => '(all name:"Avatar")',
'lang' => 'en',
'type' => 'film/film',
'key' => Configure::read('Api.Key')
);
$url = $service_url . '?' . http_build_query($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
我得到的回复是NULL
,但如果我将构建的网址输入我的Chrome REST插件或直接在浏览器中查看,我会得到有效的回复。如果url有效,为什么我的curl函数会失败?
答案 0 :(得分:1)
对我来说,添加以下工作线。
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
答案 1 :(得分:0)
我的猜测是您看到NULL
因为curl_exec
返回false
,然后json_decode
会将false
转换为NULL
。
这意味着,正如您所怀疑的,curl_exec
失败了。我不确定原因,但我会首先使用curl_error()和curl_errno()进行调试,以获取有关导致curl失败的原因的更多信息。