在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使之能同时支持GIF和JPEG
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
php 面向对象的一个例子
Apr 12 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
Sep 20 PHP
php对数组排序的简单实例
Dec 25 PHP
推荐一款PHP+jQuery制作的列表分页的功能模块
Oct 14 PHP
PHP小偷程序的设计与实现方法详解
Oct 15 PHP
PHP常用操作类之通信数据封装类的实现
Jul 16 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
Feb 10 PHP
php的instanceof和判断闭包Closure操作示例
Jan 26 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 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 strtr() 函数使用说明
2008/11/21 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
2010/05/15 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
js实现文字列表无缝滚动效果
2017/06/23 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
JavaScript设计模式之调停者模式实例详解
2018/02/03 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python网络爬虫神器PyQuery的基本使用教程
2018/02/03 Python
python3之模块psutil系统性能信息使用
2018/05/30 Python
python pygame模块编写飞机大战
2018/11/20 Python
pytorch中的上采样以及各种反操作,求逆操作详解
2020/01/03 Python
给Python学习者的文件读写指南(含基础与进阶)
2020/01/29 Python
keras中的History对象用法
2020/06/19 Python
scrapy结合selenium解析动态页面的实现
2020/09/28 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
浙大网新C/C++面试解惑
2015/05/27 面试题
学生党员的自我评价范文
2014/03/01 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
2016小学新学期寄语
2015/12/04 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
导游词之吉林花园山
2019/10/17 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python