Что не так с этим запросом PHP cURL к API Google? - PullRequest
1 голос
/ 07 ноября 2010

EDIT / UPDATE: 1) Я пробовал URL только с http (не https), и он работал в моем браузере. Но он не работал с PHP и cURL!

2) Я прочитал сообщение об ошибке curl, и там написано Couldn't resolve host 'ajax.googleapis.com'. Но, опять же, он может разрешить хост из моего веб-браузера на той же машине!

3) Google явно заявил, что мне нужно установить CURLOPT_REFERER, поэтому я сохраняю его.

Есть еще идеи? Спасибо!

ОРИГИНАЛЬНЫЙ ПОЧТА:

Когда я ввожу этот URL в свой веб-браузер, я получаю ответ JSON, который мне нужен. Но когда я запускаю следующий код cURL в PHP5 (через Apache 2), запрос не выполняется. Кто-нибудь может указать на возможные проблемы?

$url = "https://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=hola&langpair=es%7Cen&key=I-REMOVED-MY-API-KEY-FOR-STACKOVERFLOW-POST";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_REFERER, "http://my.ip.addr.ess/");
$response = curl_exec($ch);
var_dump($response);

Вывод bool (false);

Понятия не имею, что не так ... а вы? Спасибо!

Ответы [ 3 ]

3 голосов
/ 07 ноября 2010

При ответе, если ложь, произошла ошибка. Проверьте на наличие ошибок, сделав что-то вроде этого:

if (($response = curl_exec($ch)) === FALSE) {
    echo curl_error($ch);
    exit();
}

В рабочем коде вы определенно хотите сделать что-то еще в случае ошибки (вместо вывода сообщения об ошибке и выхода), но это поможет вам при отладке.

1 голос
/ 07 ноября 2010

Возможно, потому что вы обращаетесь к ресурсу HTTPS.

Быстрое исправление: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

0 голосов
/ 07 ноября 2010

Используйте http:// вместо https://.Код работает нормально без key в строке запроса.CURLOPT_REFERER тоже не обязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...