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 相关文章推荐
建站常用13种PHP开源CMS比较
Aug 23 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
PHP魔术引号所带来的安全问题分析
Jul 15 PHP
php将金额数字转化为中文大写
Jul 09 PHP
利用“多说”制作留言板、评论系统
Jul 14 PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
Aug 07 PHP
PHP如何搭建百度Ueditor富文本编辑器
Sep 21 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 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
360通用php防护代码(使用操作详解)
2013/06/18 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
类之Prototype.js学习
2007/06/13 Javascript
Js 本页面传值实现代码
2009/05/17 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
js的.innerHTML = &quot;&quot;IE9下显示有错误的解决方法
2013/09/16 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
JS实现炫酷轮播图
2020/11/15 Javascript
Python中数字以及算数运算符的相关使用
2015/10/12 Python
关于Python如何避免循环导入问题详解
2017/09/14 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
python实现图片九宫格分割
2021/03/07 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
学校卫生检查制度
2014/02/03 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
护理专业自荐书
2014/06/04 职场文书
企业标语大全
2014/07/01 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
什么是求职信?求职信应包含哪些内容?
2019/08/14 职场文书
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python