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查询搜索引擎排名位置的代码
Jan 05 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
ThinkPHP字符串函数及常用函数汇总
Jul 18 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
Joomla数据库操作之JFactory::getDBO用法
May 05 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
PHP记录和读取JSON格式日志文件
Jul 07 PHP
Zend Framework过滤器Zend_Filter用法详解
Dec 09 PHP
PHP APP微信提现接口代码
Sep 30 PHP
django中的ajax组件教程详解
Oct 18 PHP
java解析json方法总结
May 16 PHP
php传值和传引用的区别点总结
Nov 19 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
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
PHP isset()及empty()用法区别详解
2020/08/29 PHP
RR vs IO BO3 第一场2.13
2021/03/10 DOTA
JavaScript 私有成员分析
2009/01/13 Javascript
javascript 有用的脚本函数
2009/05/07 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
nodejs实现邮件发送服务实例分享
2017/03/29 NodeJs
Vue的路由动态重定向和导航守卫实例
2018/03/17 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
vue中使用protobuf的过程记录
2018/10/26 Javascript
python支持断点续传的多线程下载示例
2014/01/16 Python
在Python中使用异步Socket编程性能测试
2014/06/25 Python
使用Python来开发微信功能
2018/06/13 Python
python使用yield压平嵌套字典的超简单方法
2019/11/02 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
Pytorch 中retain_graph的用法详解
2020/01/07 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
党校学习自我鉴定
2014/02/24 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
仓库管理员岗位职责
2015/02/03 职场文书
幼儿园园长个人总结
2015/03/02 职场文书
保研推荐信范文
2015/03/25 职场文书
红白喜事主持词
2015/07/06 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
禁毒心得体会范文
2016/01/15 职场文书
Python 机器学习工具包SKlearn的安装与使用
2021/05/14 Python
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL