3

我正在尝试从 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,但是如果我将构建的 URL 输入到我的 Chrome REST 插件中或直接在浏览器中查看它,我会得到一个有效的响应。如果 url 有效,为什么我的 curl 函数会失败?

4

2 回答 2

1

对我来说,通过添加以下行有效。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
于 2015-01-19T10:35:56.487 回答
0

我的猜测是您看到NULL的是因为curl_exec返回false,然后json_decode转换falseNULL.

正如您所怀疑的那样,这意味着这curl_exec是失败的。我不知道为什么,但我会首先使用curl_error()curl_errno()进行调试,以获取有关导致 curl 失败的更多信息。

参考:curl_exec() 总是返回 false

于 2013-06-13T19:28:51.493 回答