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程序设计有所帮助。