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运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
无需重新编译php加入ftp扩展的解决方法
Feb 07 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
Yii入门教程之Yii安装及hello world
Nov 25 PHP
php计算到指定日期还有多少天的方法
Apr 14 PHP
php实现每天自动变换随机问候语的方法
May 12 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
Nov 20 PHP
php简单处理XML数据的方法示例
May 19 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
使PHP自定义函数返回多个值
2006/11/26 PHP
php 购物车完整实现代码
2014/06/05 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
2013/10/15 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
JS调试必备的5个debug技巧
2014/03/07 Javascript
Javascript动态引用CSS文件的2种方法介绍
2014/06/06 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
js实现一款简单踩白块小游戏(曾经很火)
2019/12/02 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
django1.8使用表单上传文件的实现方法
2016/11/04 Python
python如何在循环引用中管理内存
2018/03/20 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
python推导式的使用方法实例
2021/02/28 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
千禧酒店及度假村官方网站:Millennium Hotels and Resorts
2019/05/10 全球购物
学生会竞选演讲稿纪检部
2014/08/25 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
卖车协议书范文
2016/03/23 职场文书
如何在centos上使用yum安装rabbitmq-server
2021/03/31 Servers
解决Django transaction进行事务管理踩过的坑
2021/04/24 Python
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS