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.NET的入门教程
Oct 09 PHP
php中设置多级目录session的问题
Aug 08 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
关于js与php互相传值的介绍
Jun 25 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
Jun 27 PHP
php 如何获取数组第一个值
Aug 06 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
php递归创建目录的方法
Feb 02 PHP
php延迟静态绑定实例分析
Feb 08 PHP
PHP实现的json类实例
Jul 28 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
PHP7中I/O模型内核剖析详解
Apr 14 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
详解JavaScript函数
2015/12/01 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
webpack打包多页面的方法
2018/11/30 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
微信小程序转化为uni-app项目的方法示例
2020/05/22 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
OpenLayers3实现测量功能
2020/09/25 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
利用Python批量生成任意尺寸的图片
2016/08/29 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
python机器学习之随机森林(七)
2018/03/26 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
DES加密解密算法之python实现版(图文并茂)
2018/12/06 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
给老师的一封建议书
2014/03/13 职场文书
低碳生活倡议书
2014/04/14 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
市场部岗位职责范本
2015/04/15 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
python制作图形界面的2048游戏, 基于tkinter
2021/04/06 Python
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
redis复制有可能碰到的问题汇总
2022/04/03 Redis
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js