php使用curl获取https请求的方法
本文实例讲述了php使用curl获取https请求的方法。分享给大家供大家参考。具体分析如下:
今日在做一个项目,需要curl获取第三方的API,对方的API是https方式的。
之前使用curl能获取http请求,但今天获取https请求时,出现了以下的错误提示:证书验证失败。
SSLcertificateproblem,verifythattheCAcertisOK.Details:error:14090086:SSLroutines:SSL3_GET_SERVER_CERTIFICATE:certificateverifyfailed
解决方法为在curl请求时,加入:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//跳过证书检查 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,true); //从证书中检查SSL加密算法是否存在
curlhttps请求代码
<?php
/**curl获取https请求
*@paramString$url 请求的url
*@paramArray $data 要發送的數據
*@paramArray $header 请求时发送的header
*@paramint $timeout 超时时间,默认30s
*/
functioncurl_https($url,$data=array(),$header=array(),$timeout=30){
$ch=curl_init();
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);//跳过证书检查
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,true); //从证书中检查SSL加密算法是否存在
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($data));
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
$response=curl_exec($ch);
if($error=curl_error($ch)){
die($error);
}
curl_close($ch);
return$response;
}
//调用
$url='https://www.example.com/api/message.php';
$data=array('name'=>'fdipzone');
$header=array();
$response=curl_https($url,$data,$header,5);
echo$response;
?>
希望本文所述对大家的php程序设计有所帮助。