证书验证失败(SSL certificate problem) - php使用curl获取https请求的方法(附代码)
分类:PHP_Python| 发布:佚名| 查看:772 | 发表时间:2015/7/6
分享给大家php使用curl获取https请求的方法。具体分析如下:
今日在做一个项目,需要curl获取第三方的API,对方的API是https方式的。
之前使用curl能获取http请求,但今天获取https请求时,出现了以下的错误提示:证书验证失败。
SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
解决方法为在curl请求时,加入:
代码如下:
1 | curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, false); |
2 | curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, true); |
curl https请求代码
代码如下:
08 | function curl_https( $url , $data = array (), $header = array (), $timeout =30){ |
10 | curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, false); |
11 | curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, true); |
12 | curl_setopt( $ch , CURLOPT_URL, $url ); |
13 | curl_setopt( $ch , CURLOPT_HTTPHEADER, $header ); |
14 | curl_setopt( $ch , CURLOPT_POST, true); |
15 | curl_setopt( $ch , CURLOPT_POSTFIELDS, http_build_query( $data )); |
16 | curl_setopt( $ch , CURLOPT_RETURNTRANSFER, true); |
17 | curl_setopt( $ch , CURLOPT_TIMEOUT, $timeout ); |
19 | $response = curl_exec( $ch ); |
21 | if ( $error =curl_error( $ch )){ |
33 | $data = array ( 'name' => 'fdipzone' ); |
36 | $response = curl_https( $url , $data , $header , 5); |