2014-09-06 153 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