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 相关文章推荐
编写自己的php扩展函数
Oct 09 PHP
PHPExcel读取Excel文件的实现代码
Dec 06 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
推荐一款MAC OS X 下php集成开发环境mamp
Nov 08 PHP
thinkphp四种url访问方式详解
Nov 28 PHP
php通过修改header强制图片下载的方法
Mar 24 PHP
PHP会话处理的10个函数
Aug 11 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
Dec 14 PHP
php array_reverse 以相反的顺序返回数组实例代码
Apr 11 PHP
ThinkPHP实现简单登陆功能
Apr 28 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
php基于Redis消息队列实现的消息推送的方法
Nov 28 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解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
用JQuery 实现AJAX加载XML并解析的脚本
2009/07/25 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
2013/01/16 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
jQuery实现360°全景拖动展示
2015/03/18 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
node.js实现端口转发
2016/04/14 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
JS实现关键词高亮显示正则匹配
2018/06/22 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
vue 使用v-for进行循环的实例代码详解
2020/02/19 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
python实现得到一个给定类的虚函数
2014/09/28 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python模拟简单电梯调度算法示例
2018/08/20 Python
python交换两个变量的值方法
2019/01/12 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Python字典取键、值对的方法步骤
2020/09/30 Python
python给list排序的简单方法
2020/12/10 Python
python实现定时发送邮件
2020/12/23 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
营销主管自我评价怎么写
2013/09/19 职场文书
写给学生的新学期寄语
2014/01/18 职场文书
婚前协议书
2014/04/15 职场文书
给市场的环保建议书
2014/05/14 职场文书
环保项目建议书
2014/08/26 职场文书
技术经济专业求职信
2014/09/03 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
Python多线程实用方法以及共享变量资源竞争问题
2022/04/12 Python