我正在尝试使用php中的curl从API获取响应但由于某种原因它失败了。但是,当我在浏览器中打开API调用链接时,它可以正常工作。此外,如果我在浏览器中打开链接后尝试使用curl获得响应,但是如果我将$ url变量更改为新链接,它将再次停止工作,直到我再次在浏览器中打开它。
这是我的代码,不要担心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 :(得分:2)
我认为你的问题在于“https”,因为curl将ssl_verifier设置为true “问题是cURL尚未配置为信任服务器的HTTPS证书。”您可以阅读完整信息here.
您可以尝试设置此选项:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);