在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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
一个程序下载的管理程序(四)
Oct 09 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
Laravel中注册Facades的步骤详解
Mar 16 PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
PHP中的访问修饰符简单比较
Feb 02 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
Oct 02 PHP
浅谈PHP5.6 与 PHP7.0 区别
Oct 09 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
PHP5.0对象模型探索之抽象方法和抽象类
2006/09/05 PHP
php zend 相对路径问题
2009/01/12 PHP
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
ThinkPHP添加更新标签的方法
2014/12/05 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
swoole锁的机制代码实例讲解
2021/03/04 PHP
javascript 程序库的比较(一)之DOM功能
2010/04/07 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
javascript实现当前页导航激活的方法
2015/02/27 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
2016/05/11 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
Javascript之面向对象--接口
2016/12/02 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
vue-router3.0版本中 router.push 不能刷新页面的问题
2018/05/10 Javascript
解决vue.js this.$router.push无效的问题
2018/09/03 Javascript
JQuery获得内容和属性方法解析
2020/05/30 jQuery
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python functools模块学习总结
2015/05/09 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
NumPy 数组使用大全
2019/04/25 Python
python进阶之自定义可迭代的类
2019/08/20 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
加拿大奢华时装品牌:Mackage
2018/01/10 全球购物
自我评价正确写法范文
2013/12/10 职场文书
出生医学证明样本
2014/01/17 职场文书
装修五一活动策划案
2014/01/23 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
被告答辩状范文
2015/05/22 职场文书
党性修养心得体会2016
2016/01/21 职场文书
Python实现排序方法常见的四种
2021/07/15 Python
python 中的jieba分词库
2021/11/23 Python