在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中截取中文字符串的代码小结
Jul 17 PHP
php保存二进制原始数据为图片的程序代码
Oct 14 PHP
php操作mongoDB实例分析
Dec 29 PHP
PHP实现过滤各种HTML标签
May 17 PHP
Thinkphp+smarty+uploadify实现无刷新上传
Jul 30 PHP
浅析Yii2缓存的使用
May 10 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
May 03 PHP
PHP5.6新增加的可变函数参数用法分析
Aug 25 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 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
php include的妙用,实现路径加密
2008/07/29 PHP
php下将XML转换为数组
2010/01/01 PHP
PHPUnit安装及使用示例
2014/10/29 PHP
PHP7标量类型declare用法实例分析
2016/09/26 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
js/jquery解析json和数组格式的方法详解
2014/01/09 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
vue中改变滚动条样式的方法
2020/03/03 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
[04:11]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/01/30 DOTA
[58:35]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
[03:00]DOTA2-DPC中国联赛1月18日Recap集锦
2021/03/11 DOTA
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
python实现飞机大战游戏
2020/10/26 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python opencv进行图像拼接
2020/03/27 Python
python用TensorFlow做图像识别的实现
2020/04/21 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
html5使用canvas画三角形
2014/12/15 HTML / CSS
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
澳大利亚实惠时尚女装商店:Katies
2019/06/16 全球购物
2014年会演讲稿范文
2014/01/06 职场文书
楼面部长岗位职责范本
2014/02/14 职场文书
创业大赛策划书
2014/03/01 职场文书
小学生学习感言
2014/03/10 职场文书
三八节活动简报
2015/07/20 职场文书
MYSQL 无法识别中文的永久解决方法
2021/06/03 MySQL
golang为什么要统一错误处理
2022/04/03 Golang