2010-11-07 31 views
1

編輯/更新: 1)我試着只有http(不是https)的URL,它在我的瀏覽器中工作。但是,它不適用於PHP和cURL!此PHP cURL請求對Google API有什麼不妥?

2)我讀了curl錯誤信息,它說Couldn't resolve host 'ajax.googleapis.com'。但是,它再次,可能解決在同一臺機器上從我的網頁瀏覽器的主機!

3)谷歌明確指出,我需要設置CURLOPT_REFERER,所以我保留它。

還有其他想法嗎?謝謝!

原貼:

當我進入這個網址到我的網頁瀏覽器,我得到了我想要的JSON響應。但是,當我在PHP5中運行以下cURL代碼(通過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

當響應爲false時,出現錯誤。檢查做這樣的錯誤:

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

在生產代碼,你一定要做到上的錯誤條件別的東西(而不是輸出錯誤信息並退出),但是這會幫助你進行調試。

+0

謝謝,這很有幫助。 (我有一段時間沒有使用PHP或cURL!) – stalepretzel 2010-11-07 21:50:33

+0

它幫助,謝謝.. – Anupam 2014-04-23 08:46:01

1

可能是因爲您正在訪問HTTPS資源。

快速修復: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

+0

好主意。但更多的錯誤。不過謝謝! – stalepretzel 2010-11-07 21:49:43

0

使用http://而不是https://。在查詢字符串中沒有key的代碼工作正常。 CURLOPT_REFERER也是沒有必要的。