php使用curl获取https请求的方法


Posted in PHP onFebruary 11, 2015

本文实例讲述了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请求时,加入:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查  

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, true);  // 从证书中检查SSL加密算法是否存在

curl https请求代码

<?php  

/** curl 获取 https 请求 

* @param String $url        请求的url 

* @param Array  $data       要?送的?? 

* @param Array  $header     请求时发送的header 

* @param int    $timeout    超时时间,默认30s 

*/  

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

PHP 相关文章推荐
mysql5写入和读出乱码解决
Nov 25 PHP
珊瑚虫IP库浅析
Feb 15 PHP
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
PHP连接SQLSERVER 注意事项(附dll文件下载)
Jun 28 PHP
php二维数组排序详解
Nov 06 PHP
php中filter_input函数用法分析
Nov 15 PHP
php的mssql数据库连接类实例
Nov 28 PHP
php文件操作之小型留言本实例
Jun 20 PHP
PHP的消息通信机制测试实例
Nov 10 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
php+html5使用FormData对象提交表单及上传图片的方法
Feb 11 #PHP
php判断并删除空目录及空子目录的方法
Feb 11 #PHP
php获取YouTube视频信息的方法
Feb 11 #PHP
php实现图片局部打马赛克的方法
Feb 11 #PHP
php实现获取文件mime类型的方法
Feb 11 #PHP
php强制更新图片缓存的方法
Feb 11 #PHP
Laravel中使用自己编写类库的3种方法
Feb 10 #PHP
You might like
php.ini 中文版
2006/10/28 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
javascript json2 使用方法
2010/03/16 Javascript
JavaScript获取网页支持表单字符集的方法
2015/04/02 Javascript
Backbone.js 0.9.2 源码注释中文翻译版
2015/06/25 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
jQuery实现的checkbox级联选择下拉菜单效果示例
2016/12/26 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
Vue文本模糊匹配功能如何实现
2020/07/30 Javascript
Python实现动态添加类的属性或成员函数的解决方法
2014/07/16 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
Python中使用partial改变方法默认参数实例
2015/04/28 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
python利用标准库如何获取本地IP示例详解
2017/11/01 Python
python opencv实现任意角度的透视变换实例代码
2018/01/12 Python
Python内置函数reversed()用法分析
2018/03/20 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
python实现图片上添加图片
2019/11/26 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
影视动画专业个人的自我评价
2013/12/31 职场文书
《灯光》教学反思
2014/02/08 职场文书
食品安全责任书
2014/04/15 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
投标承诺函格式
2015/01/21 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
高一地理教学工作总结
2015/08/12 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server