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 删除cookie和浏览器重定向
Mar 16 PHP
PHP教程 基本语法
Oct 23 PHP
php获取操作系统语言代码
Nov 04 PHP
PHP读取大文件的类SplFileObject使用介绍
Apr 09 PHP
php之Smarty模板使用方法示例详解
Jul 08 PHP
简单实用的PHP防注入类实例
Dec 05 PHP
php计算数组相同值出现次数的代码(array_count_values)
Jan 20 PHP
php实现无限级分类(递归方法)
Aug 06 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
thinkphp分页集成实例
Jul 24 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
详解php中流行的rpc框架
May 29 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
PHP判断文章里是否有图片的简单方法
2014/07/26 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
php实现快速对二维数组某一列进行组装的方法小结
2019/12/04 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
javascript写的简单的计算器,内容很多,方法实用,推荐
2011/12/29 Javascript
6款新颖的jQuery和CSS3进度条插件推荐
2013/03/05 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
jQuery实现的进度条效果
2015/07/15 Javascript
深入浅析AngularJS和DataModel
2016/02/16 Javascript
BootStrap智能表单实战系列(三)分块表单配置详解
2016/06/13 Javascript
jquery动态遍历Json对象的属性和值的方法
2016/07/27 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
javascript删除数组元素的七个方法示例
2019/09/09 Javascript
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中enumerate函数代码解析
2017/10/31 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
Python 多线程共享变量的实现示例
2020/04/17 Python
使用keras时input_shape的维度表示问题说明
2020/06/29 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
微信html5页面调用第三方位置导航的示例
2018/03/14 HTML / CSS
骆驼官方商城:CAMEL
2016/11/22 全球购物
放飞梦想演讲稿800字
2014/08/26 职场文书
合作经营协议书范本
2014/09/16 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
Python anaconda安装库命令详解
2021/10/16 Python
MySQL Server层四个日志的实现
2022/03/31 MySQL