在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项目的方法
Oct 09 PHP
过滤掉PHP数组中的重复值的实现代码
Jul 17 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 PHP
使用PHP接收POST数据,解析json数据
Jun 28 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
PHP 前加at符合@的作用解析
Jul 31 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php实现生成PDF文件的方法示例【基于FPDF类库】
Jul 21 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 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
PHPMyAdmin 快速配置方法
2009/05/11 PHP
php中随机函数mt_rand()与rand()性能对比分析
2014/12/01 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
浅谈Postman解决token传参的问题
2018/03/31 Javascript
在微信小程序中使用vant的方法
2019/06/07 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python open读写文件实现脚本
2008/09/06 Python
Python操作MySQL简单实现方法
2015/01/26 Python
Python编程之属性和方法实例详解
2015/05/19 Python
python追加元素到列表的方法
2015/07/28 Python
python实现员工管理系统
2018/01/11 Python
python和shell获取文本内容的方法
2018/06/05 Python
python 接收处理外带的参数方法
2018/12/03 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
2019/07/22 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
django-crontab 定时执行任务方法的实现
2019/09/06 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
2019/09/10 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
英国电子专家:maplin
2019/09/04 全球购物
自荐信的禁忌和要点
2013/10/15 职场文书
大学生个人求职口试自我评价
2014/02/16 职场文书
毕业典礼演讲稿
2014/05/13 职场文书
大学生翘课检讨书范文
2014/10/06 职场文书
大国崛起英国观后感
2015/06/02 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
动画《平凡职业成就世界最强》宣布制作OVA
2022/04/01 日漫
Win11远程连接不上怎么办?Win11远程桌面用不了的解决方法
2022/08/05 数码科技