在PHP中实现使用Guzzle执行POST和GET请求


Posted in PHP onOctober 15, 2019

以往在项目中要用到第三方接口时会用到封装好的curl执行请求,现在有了更好的解决方案——Guzzle。

下面是官方介绍:

Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。

接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。

发送同步或异步的请求均使用相同的接口。

使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。

抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。

中间件系统允许你创建构成客户端行为。

安装

composer require guzzlehttp/guzzle //用composer安装最新guzzle,当前是6.3版

GET请求示例

$client = new GuzzleHttp\Client(); //初始化客户端
$response = $client->get('http://httpbin.org/get', [
   'query' => [ //get查询字符串参数组
    'a' => '参数a的值',
    'b' => '参数b的值',
   ],
   'timeout' => 3.14 //设置请求超时时间
  ]);
  
//  与上面一条等价
//  $response = $client->request('GET','http://httpbin.org/get', [
//   'query' => [  
//    'a' => '参数a的值',
//    'b' => '参数b的值',
//   ],
//   'timeout' => 3.14 
//  ]);

$body = $response->getBody(); //获取响应体,对象
$bodyStr = (string)$body; //对象转字串,这就是请求返回的结果
echo $bodyStr;

类似的请求方法还有:

$response = $client->get('http://httpbin.org/get');
$response = $client->delete('http://httpbin.org/delete');
$response = $client->head('http://httpbin.org/get');
$response = $client->options('http://httpbin.org/get');
$response = $client->patch('http://httpbin.org/patch');
$response = $client->post('http://httpbin.org/post');
$response = $client->put('http://httpbin.org/put');

POST请求示例

$client = new GuzzleHttp\Client();
//普通表单`application/x-www-form-urlencoded`的POST请求
$response = $client->post('http://httpbin.org/post', [
 'form_params' => [  //参数组
  'a' => 'aaa',
  'b' => 'bbb',
  'nested_field' => [ //参数允许嵌套多层
   'A' => 'AAA',
   'B' => 'BBB',
  ]
 ],
]);
  
  //包含文件上传的表单`multipart/form-data`的POST请求
//  $response = $client->post('http://httpbin.org/post', [
//   'multipart' => [ //注意这个参数组的键名与前一个不同
//    [
//     'name' => 'a', //字段名
//     'contents' => 'aaa' //对应的值
//    ],
//    [
//     'name' => 'upload_file_name', //文件字段名
//     'contents' => fopen('/data/test.md', 'r') //文件资源
//    ],
//   ]
//  ]);
  
  $body = $response->getBody(); //获取响应体,对象
  $bodyStr = (string)$body; //对象转字串
  echo $bodyStr;

以上便是Guzzle的POST和GET请求的基本介绍,相信很多时间掌握这两个语法方法已经能满足项目开发的需求了。当然这只是强大的Guzzle功能中很小的一部份,感兴趣的同学想深入了解的可以参考官方文档。希望大家多多支持三水点靠木。

Guzzle6中文文档参考

PHP 相关文章推荐
php获取url字符串截取路径的文件名和扩展名的函数
Jan 22 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
php字符串分割函数用法实例
Mar 17 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
Apr 22 PHP
php生成图片验证码
Jun 09 PHP
php文件压缩之PHPZip类用法实例
Jun 18 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
PHP实现的堆排序算法详解
Aug 17 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
Apr 04 PHP
php中yar框架实例用法讲解
Dec 27 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 #PHP
解决在laravel中auth建立时候遇到的问题
Oct 15 #PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
Oct 15 #PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 #PHP
浅谈PHP array_search 和 in_array 函数效率问题
Oct 15 #PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
Oct 15 #PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
Oct 15 #PHP
You might like
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
phpmyadmin操作流程
2006/10/09 PHP
php下网站防IP攻击代码,超级实用
2010/10/24 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
PHP人民币金额转大写实例代码
2015/10/02 PHP
php注册登录系统简化版
2020/12/28 PHP
Yii2实现多域名跨域同步登录退出
2017/02/04 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
php gethostbyname获取域名ip地址函数详解
2010/01/24 Javascript
javascript下string.format函数补充
2010/08/24 Javascript
纯文字版返回顶端的js代码
2013/08/01 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
jQuery遍历节点树方法分析
2016/09/08 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
微信小程序实现星级评价效果
2018/12/28 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
python实现二分查找算法
2017/09/21 Python
基于Python os模块常用命令介绍
2017/11/03 Python
python实现随机漫步算法
2018/08/27 Python
jupyternotebook 撤销删除的操作方式
2020/04/17 Python
Myprotein瑞典官方网站:畅销欧洲英国运动营养品牌
2018/01/22 全球购物
彪马加拿大官网:PUMA加拿大
2018/10/04 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
计算机开发个人求职信范文
2013/09/26 职场文书
应聘教师推荐信
2013/10/31 职场文书
高级工程师岗位职责
2013/12/15 职场文书
2014年前台接待工作总结
2014/12/05 职场文书
2016公司年会主持词
2015/07/01 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS