2014-09-06 124 views
-1

我试图从API中使用curl获取响应,但由于某种原因失败。但是,当我在浏览器中打开API调用链接时,它工作正常。此外,如果我在浏览器curl中打开链接后尝试使用curl获取响应,但如果将$ url变量更改为新链接,它将再次停止工作,直到我再次在浏览器中打开它。PHP Curl不返回响应

这里是我的代码,不用担心的API密钥,它只是一个试验:

<?php 
set_time_limit(30); 
$API_KEY = "ak_wujpBbfefrmxDleyAmnqtFpqAcmey"; 

$url = 'https://www.google.com/'; 
$api_call = "https://www.screenshot-website.com/api/$API_KEY?url=$url&type=tablet"; 

$curl = curl_init(); 

curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => $api_call, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_TIMEOUT_MS => 30000, 
    CURLOPT_CONNECTTIMEOUT => 30, 
    CURLOPT_CONNECTTIMEOUT_MS => 30000) 
); 

$response = json_decode(curl_exec($curl), true); 

if($errno = curl_errno($curl)) { 
    $error_message = curl_strerror($errno); 
    echo "cURL error ({$errno}):\n {$error_message}"; 
} 

curl_close($curl); ?> 

<img src="<?php echo $response['image']; ?>"> 

我都没有错误。

+0

什么$回应时,它不工作? – idmean 2014-09-06 20:16:19

+0

症状没有任何意义。浏览器中的打开url与服务器的curl请求完全断开 – charlietfl 2014-09-06 20:17:44

+0

根据gettype(),它是NULL – 2014-09-06 20:18:16

回答

1

我认为你的问题是因为curl将ssl_verifier设置为true而导致“https” “问题是cURL没有被配置为信任服务器的HTTPS证书。你可以阅读完整的信息here.

你可以尝试设置这个选项:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
+1

刚刚尝试过,它并没有帮助 – 2014-09-06 20:25:46

+1

适用于我,谢谢! – 2015-04-08 23:09:52