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删除文件夹及其文件夹下所有文件的函数代码
Jan 23 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
如何使用PHP Embed SAPI实现Opcodes查看器
Nov 10 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
原生php实现excel文件读写的方法分析
Apr 25 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
php+iframe 实现上传文件功能示例
Mar 04 PHP
PHP连接MSSQL数据库案例,PHPWAMP多个PHP版本连接SQL Server数据库
Apr 16 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
PHP Undefined index报错的修复方法
2011/07/17 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
php去除换行(回车换行)的三种方法
2014/03/26 PHP
php函数与传递参数实例分析
2014/11/15 PHP
php检测文本的编码
2015/07/26 PHP
PHP常用设计模式之委托设计模式
2016/02/13 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
2020/04/06 PHP
javascript语句中的CDATA标签的意义
2007/05/09 Javascript
JavaScript 对话框和状态栏使用说明
2009/10/25 Javascript
JavaScript中的View-Model使用介绍
2011/08/11 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
jQuery simpleModal插件的使用介绍
2016/08/30 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
2017/08/24 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
vue实现标签云效果的示例
2020/11/09 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
Python浅复制中对象生存周期实例分析
2018/04/02 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
初探利用Python进行图文识别(OCR)
2019/02/26 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
如何在django中运行scrapy框架
2020/04/22 Python
Python 实现微信自动回复的方法
2020/09/11 Python
python+appium+yaml移动端自动化测试框架实现详解
2020/11/24 Python
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
模具专业推荐信
2013/10/30 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
《学棋》教后反思
2014/04/14 职场文书
幼儿园体操比赛口号
2015/12/25 职场文书
《绝招》教学反思
2016/02/20 职场文书
Vue h函数的使用详解
2022/02/18 Vue.js
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers