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学习笔记 [预定义数组(超全局数组)]
Jun 09 PHP
如何设置mysql允许外网访问
Jun 04 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
Jun 21 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
PHP实现文件上传和多文件上传
Dec 24 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
yii插入数据库防并发的简单代码
May 27 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP实现的只保留字符串首尾字符功能示例【隐藏部分字符串】
Mar 11 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
模仿OSO的论坛(五)
2006/10/09 PHP
基于MySQL分区性能的详细介绍
2013/05/02 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
JavaScript Archive Network 集合
2007/05/12 Javascript
List the Codec Files on a Computer
2007/06/18 Javascript
jQuery UI AutoComplete 自动完成使用小记
2010/08/21 Javascript
向左滚动文字 js代码效果
2013/08/17 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
深入理解jquery中的事件与动画
2016/05/24 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
基于BootStrap实现简洁注册界面
2017/07/20 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
微信小程序实现购物车功能
2020/11/18 Javascript
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
[01:39]2014DOTA2国际邀请赛 Newbee经理CU专访队伍火力全开
2014/07/15 DOTA
[01:08:32]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第二场 1月18日
2021/03/11 DOTA
Python中将字典转换为列表的方法
2016/09/21 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
Python 点击指定位置验证码破解的实现代码
2019/09/11 Python
Django框架反向解析操作详解
2019/11/28 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
2016新教师培训心得体会范文
2016/01/08 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
Vscode中SSH插件如何远程连接Linux
2022/05/02 Servers