在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执行sql语句的写法
Mar 10 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
php根据操作系统转换文件名大小写的方法
Feb 24 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
Jul 05 PHP
php源码分析之DZX1.5字符串截断函数cutstr用法
Jun 17 PHP
使用PHP免费发送定时短信的实例
Oct 24 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP生成word文档的三种实现方式
Nov 14 PHP
Yii2.0实现生成二维码功能实例
Oct 24 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 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伪静态页面函数附使用方法
2008/06/20 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
轻松实现php文件上传功能
2017/02/17 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
php实现网页端验证码功能
2017/07/11 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
js charAt的使用示例
2014/02/18 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
vue.js使用v-if实现显示与隐藏功能示例
2018/07/06 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
2018/09/14 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
JS实现小星星特效
2019/12/24 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
Python如何根据时间序列数据作图
2020/05/12 Python
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
javascript实现用户必须勾选协议实例讲解
2021/03/24 Javascript
毕业实习个人鉴定范文
2013/12/10 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
碧霞祠导游词
2015/02/09 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
一篇文章弄清楚Ajax请求的五个步骤
2022/03/17 Javascript
JS函数式编程实现XDM一
2022/06/16 Javascript