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集成FCK的函数代码
Sep 27 PHP
如何用phpmyadmin设置mysql数据库用户的权限
Jan 09 PHP
PHP自动识别字符集并完成转码详解
Aug 02 PHP
php中将一段数据存到一个txt文件中并显示其内容
Aug 15 PHP
php中使用key,value,current,next和prev函数遍历数组的方法
Mar 17 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
PHP中session跨子域的三种实现方法
Jul 25 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
基于php编程规范(详解)
Aug 17 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
Laravel关系模型指定条件查询方法
Oct 10 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设计模式  Command(命令模式)
2011/06/17 PHP
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
phplot生成图片类用法详解
2015/01/06 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
微信小程序云开发之数据库操作
2019/05/18 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
2020/03/06 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
介绍Python中的__future__模块
2015/04/27 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
浅谈Django的缓存机制
2018/08/23 Python
python实现电子书翻页小程序
2019/07/23 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
python实现三壶谜题的示例详解
2020/11/02 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
十岁生日父母答谢词
2014/01/18 职场文书
完美主义个人的自我评价
2014/02/17 职场文书
秋天的怀念教学反思
2014/04/28 职场文书
投标授权委托书范文
2014/08/02 职场文书
班委竞选稿范文
2015/11/21 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL
javascript的var与let,const之间的区别详解
2022/02/18 Javascript
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript