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防盗链的常用方法小结
Jul 02 PHP
php检测iis环境是否支持htaccess的方法
Feb 18 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP防盗链的基本思想 防盗链的设置方法
Sep 25 PHP
php 的反射详解及示例代码
Aug 25 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
PHP数据库操作三:redis用法分析
Aug 16 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
Nov 17 PHP
对于Laravel 5.5核心架构的深入理解
Feb 22 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 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命名空间(namespace)的动态访问及使用技巧
2014/08/18 PHP
PHP文件操作方法汇总
2015/07/01 PHP
微信网页授权(OAuth2.0) PHP 源码简单实现
2016/08/29 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
javascript快速排序算法详解
2014/09/17 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
微信小程序实现移动端滑动分页效果(ajax)
2017/06/13 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
深入学习Vue nextTick的用法及原理
2019/10/08 Javascript
[01:04:01]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第一场
2014/05/24 DOTA
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
python小白切忌乱用表达式
2020/05/29 Python
使用tensorflow根据输入更改tensor shape
2020/06/23 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
全球最受追捧的运动服品牌领先数字目的地:Stylerunner
2020/11/25 全球购物
岗位竞聘演讲稿
2014/01/10 职场文书
外贸采购员岗位职责
2014/03/08 职场文书
假面舞会策划方案
2014/05/29 职场文书
雷人标语集锦
2014/06/19 职场文书
音乐学专业求职信
2014/07/22 职场文书
毕业生实习证明
2014/09/19 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
公司规章制度范本
2015/08/03 职场文书
2015年村级财务管理制度
2015/08/04 职场文书
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA
Mongodb 迁移数据块的流程介绍分析
2022/04/18 MongoDB