php实现的http请求封装示例


Posted in PHP onNovember 08, 2016

本文实例讲述了php的http请求封装。分享给大家供大家参考,具体如下:

/**
* 发送HTTP请求方法,目前只支持CURL发送请求
* @param string $url  请求URL
* @param array $params 请求参数
* @param string $method 请求方法GET/POST
* @return array $data  响应数据
*/
protected function http($url, $params, $method = 'GET', $header = array(), $multi = false) {
    $opts = array(CURLOPT_TIMEOUT => 30, CURLOPT_RETURNTRANSFER => 1, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_HTTPHEADER => $header);
    /* 根据请求类型设置特定参数 */
    switch(strtoupper($method)) {
      case 'GET' :
        $opts[CURLOPT_URL] = $url . '&' . http_build_query($params);
        dump($opts[CURLOPT_URL]);
        break;
      case 'POST' :
        //判断是否传输文件
        $params = $multi ? $params : http_build_query($params);
        $opts[CURLOPT_URL] = $url;
        dump($opts[CURLOPT_URL]);
        $opts[CURLOPT_POST] = 1;
        $opts[CURLOPT_POSTFIELDS] = $params;
        break;
      default :
        throw new Exception('不支持的请求方式!');
    }
    /* 初始化并执行curl请求 */
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $data = curl_exec($ch);
    $error = curl_error($ch);
    curl_close($ch);
    if ($error)
      throw new Exception('请求发生错误:' . $error);
    return $data;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
PHP构造函数与析构函数用法示例
Sep 28 PHP
CentOS系统中PHP安装扩展的方式汇总
Apr 09 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 PHP
laravel 事件/监听器实例代码
Apr 12 PHP
Git命令之分支详解
Mar 02 PHP
PHP实现原生态图片上传封装类方法
Nov 08 #PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 #PHP
Yii2框架BootStrap样式的深入理解
Nov 07 #PHP
php 时间time与日期date之间的使用详解及区别
Nov 07 #PHP
php 微信公众平台开发模式实现多客服的实例代码
Nov 07 #PHP
深入了解PHP中的Array数组和foreach
Nov 06 #PHP
PHP运行模式汇总
Nov 06 #PHP
You might like
推荐十款免费 WordPress 插件
2015/03/24 PHP
php获得文件夹下所有文件的递归算法的简单实例
2016/11/01 PHP
js Array对象的扩展函数代码
2013/04/24 Javascript
JS教程:window.location使用方法的区别介绍
2013/10/04 Javascript
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
2014/09/25 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
python抓取需要扫微信登陆页面
2019/04/29 Python
在win10和linux上分别安装Python虚拟环境的方法步骤
2019/05/09 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
python 类之间的参数传递方式
2019/12/20 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
Python常用数据分析模块原理解析
2020/07/20 Python
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
公共汽车、火车和飞机票的通用在线预订和销售平台:INFOBUS
2019/11/30 全球购物
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
师范生自荐信范文
2013/10/06 职场文书
铲车司机岗位职责
2014/03/15 职场文书
小学教师自我鉴定范文
2014/03/20 职场文书
3分钟英语演讲稿
2014/04/29 职场文书
岗位说明书怎么写
2014/07/30 职场文书
无子女夫妻离婚协议书(4篇)
2014/10/20 职场文书
2014年信用社工作总结
2014/11/25 职场文书
护理专业自荐信范文
2015/03/06 职场文书
业务内勤岗位职责
2015/04/13 职场文书
遗愿清单观后感
2015/06/09 职场文书
浅谈Python数学建模之线性规划
2021/06/23 Python