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 相关文章推荐
详细介绍:Apache+PHP+MySQL配置攻略
Sep 05 PHP
PHP安全编程之加密功能
Oct 09 PHP
php自定义函数之递归删除文件及目录
Aug 08 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
smarty获得当前url的方法分享
Feb 14 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
Yii框架登录流程分析
Dec 03 PHP
php表单提交实例讲解
Nov 12 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
Oct 08 PHP
Laravel学习教程之路由模块
Aug 18 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
php实现socket推送技术的示例
Dec 20 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
日本十大最佳动漫,全都是二次元的神级作品
2019/10/05 日漫
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
PHP调用接口API封装的例子
2019/10/11 PHP
jQuery 数据缓存模块进化史详细介绍
2012/11/19 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
javascript回车完美实现tab切换功能
2014/03/13 Javascript
基于jquery实现的树形菜单效果代码
2015/09/06 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
axios向后台传递数组作为参数的方法
2018/08/11 Javascript
图文讲解用vue-cli脚手架创建vue项目步骤
2019/02/12 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
[08:29]DOTA2每周TOP10 精彩击杀集锦vol.7
2014/06/25 DOTA
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
python处理大数字的方法
2015/05/27 Python
浅析python redis的连接及相关操作
2019/11/07 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
python推导式的使用方法实例
2021/02/28 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
数以千计的折扣工业产品:ESE Direct
2018/05/20 全球购物
C++:局部变量能否和全局变量重名
2014/03/03 面试题
什么是唯一索引
2015/07/05 面试题
为什么要使用servlet
2016/01/17 面试题
毕业自荐书
2013/12/09 职场文书
党课学习思想汇报
2014/01/02 职场文书
材料员岗位职责
2014/03/13 职场文书
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
学生保证书
2015/01/16 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python