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中3des加密代码(完全与.net中的兼容)
Aug 02 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
php针对cookie操作的队列操作类实例
Dec 10 PHP
PHP传参之传值与传址的区别
Apr 24 PHP
WIFI万能钥匙密码查询接口实例
Sep 28 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
Oct 10 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
简单解决微信文章图片防盗链问题
Dec 17 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
PHP+Oracle本地开发环境搭建方法详解
Apr 01 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
PHP 数组实例说明
2008/08/18 PHP
php在字符串中查找另一个字符串
2008/11/19 PHP
php join函数应用
2011/05/04 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
yii实现创建验证码实例解析
2014/07/31 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
Zend Framework入门教程之Zend_Registry组件用法详解
2016/12/09 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
jQuery常用数据处理方法小结
2015/02/20 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
基于jquery fly插件实现加入购物车抛物线动画效果
2016/04/05 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
Python中使用item()方法遍历字典的例子
2014/08/26 Python
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
Python socket套接字实现C/S模式远程命令执行功能案例
2018/07/06 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
对Python3中dict.keys()转换成list类型的方法详解
2019/02/03 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
为什么要使用servlet
2016/01/17 面试题
培训讲师邀请函
2014/01/10 职场文书
商场中秋节活动方案
2014/02/07 职场文书
动员大会主持词
2014/03/20 职场文书
求职信格式要求
2014/05/23 职场文书
民主生活会整改措施(党员)
2014/09/18 职场文书
2014年度培训工作总结
2014/11/27 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书