1

我正在尝试使用 Google 安全浏览查找 API 获得响应,如下所示:

$url ="https://sb-ssl.google.com/safebrowsing/api/lookup?client=myappname&apikey=mykey&appver=1.0&pver=3.0&url=".urlencode($myurl);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120);
$body = curl_exec($ch);
$info = curl_getinfo($ch);

我知道我的 URL 是正确的,因为如果我转储它然后将其粘贴到浏览器,我会得到预期的结果(例如“恶意软件”)。所以我假设它一定是带有 cURL 的东西。我正在处理 localhost 并且 extension=php_curl.dll 在我的 php.ini,Php 版本 5.4.4 中未注释

html_code 始终为 0

4

2 回答 2

1

只需将 CURLOPT_SSL_VERIFYPEER 和 CURLOPT_SSL_VERIFYHOST 设置为 false。

我的 cURL 代码有什么问题(http 状态为 0)吗?

还要检查http://code.google.com/p/twitter-api/issues/detail?id=1291,它可能会有所帮助。它是不同的 API,但无论如何都有相同的问题。

于 2012-09-17T13:50:30.417 回答
1

问题及其解决方案在这里得到了很好的描述:

http://richardwarrender.com/2007/05/the-secret-to-curl-in-php-on-windows/

基本上,如果您不使用 cURL 的独立版本,则 cURL 函数可能不包含我的情况所需的证书包,因为我试图连接到安全主机。

$ch = curl_init();
// Apply various settings
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_CAINFO, "C:/xampp/ca-bundle.crt"); //path to the CA-bundle
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$result = curl_exec ($ch);
curl_close($ch);
于 2012-09-17T14:25:24.480 回答