Я пытаюсь получить данные из API Freebase. Я вручную создал рабочий вызов 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_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
Я предполагаю, что вы видите NULL
потому что curl_exec
возвращает false
а затем json_decode
преобразует значение false
в NULL
.
Это означает, что, как вы подозревали, curl_exec
не работает. Я не уверен, почему, но я бы начал с отладки с curl_error () и curl_errno (), чтобы получить больше информации о том, что вызывает завихрение.
Ссылка: curl_exec () всегда возвращает false