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 相关文章推荐
用Zend Encode编写开发PHP程序
Oct 09 PHP
将OICQ数据转成MYSQL数据
Oct 09 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
二招解决php乱码问题
Mar 25 PHP
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php基于curl重写file_get_contents函数实例
Nov 08 PHP
PHP培训要多少钱
Jun 06 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 PHP
PHP7 新增功能
Mar 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
phpmail类发送邮件函数代码
2012/02/20 PHP
php网站地图生成类示例
2014/01/13 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
迪菲-赫尔曼密钥交换(Diffie?Hellman)算法原理和PHP实现版
2015/05/12 PHP
关于PHP转换超过2038年日期出错的问题解决
2017/06/28 PHP
Nigma vs Alliance BO5 第一场2.14
2021/03/10 DOTA
JavaScript语言中的Literal Syntax特性分析
2007/03/08 Javascript
判断控件是否已加载完成的代码
2010/02/24 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
使用Vuex实现一个笔记应用的方法
2018/03/13 Javascript
jQuery实现遍历XML节点和属性的方法示例
2018/04/29 jQuery
一看就会的vuex实现登录验证(附案例)
2020/01/09 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
使用Python实现简单的服务器功能
2017/08/25 Python
使用Scrapy爬取动态数据
2018/10/21 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
opencv3/Python 稠密光流calcOpticalFlowFarneback详解
2019/12/11 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
Python urlencode和unquote函数使用实例解析
2020/03/31 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
Python新手如何理解循环加载模块
2020/05/29 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
党建工作经验交流材料
2014/05/25 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
医院科室评语
2015/01/04 职场文书
董事长新年致辞
2015/07/29 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
比较node.js和Deno
2021/04/27 Javascript
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android