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中处理模拟rewrite 效果
Dec 09 PHP
利用Memcached在php下实现session机制 替换PHP的原生session支持
Aug 21 PHP
PHP基础知识回顾
Aug 16 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
在PHP中设置、使用、删除Cookie的解决方法
May 06 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
Jul 19 PHP
thinkPHP5实现的查询数据库并返回json数据实例
Oct 23 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
详解阿里云视频直播PHP-SDK接入教程
Jul 09 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
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
详解puppeteer使用代理
2018/12/27 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
python opencv之分水岭算法示例
2018/02/24 Python
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
Python-openCV读RGB通道图实例
2020/01/17 Python
基于nexus3配置Python仓库过程详解
2020/06/15 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
教师求职推荐信范文
2013/11/20 职场文书
文秘应届生求职信
2014/07/05 职场文书
人力资源部岗位职责
2015/02/11 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
七年级生物教学反思
2016/02/20 职场文书
ipad隐藏软件app图标方法
2022/04/19 数码科技
吉利入股戴姆勒后smart“长大了”
2022/04/21 数码科技
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS