在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 模拟get_headers函数的代码示例
Apr 27 PHP
解析isset与is_null的区别
Aug 09 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
PHP生成图片验证码、点击切换实例
Jun 25 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
php强大的时间转换函数strtotime
Feb 18 PHP
Laravel路由设定和子路由设定实例分析
Mar 30 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
在Yii2特定页面如何禁用调试工具栏Debug Toolbar详解
Aug 07 PHP
浅析PHP中的闭包和匿名函数
Dec 25 PHP
PHP基于timestamp和nonce实现的防止重放攻击方案分析
Jul 26 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
Protoss兵种介绍
2020/03/14 星际争霸
php中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
php抓取页面的几种方法详解
2013/06/17 PHP
解析PHP实现下载文件的两种方法
2013/07/05 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
json的前台操作和后台操作实现代码
2012/01/20 Javascript
JS自动缩小超出大小的图片
2012/10/12 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
vue element-ui实现input输入框金额数字添加千分位
2019/12/29 Javascript
JS快速实现简单计算器
2020/04/08 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
python使用socket远程连接错误处理方法
2015/04/29 Python
高效使用Python字典的清单
2018/04/04 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
2018/04/27 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
一行python实现树形结构的方法
2019/08/09 Python
详解在Python中以绝对路径或者相对路径导入文件的方法
2019/08/30 Python
python图形开发GUI库pyqt5的基本使用方法详解
2020/02/14 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
新兵入伍决心书
2015/09/22 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
业余无线电通联Q语
2022/02/18 无线电
Nginx配置之禁止指定IP访问
2022/05/02 Servers