2010-11-07 30 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也是没有必要的。