在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 相关文章推荐
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
Jan 29 PHP
php 输出双引号"与单引号'的方法
May 09 PHP
免费手机号码归属地API查询接口和PHP使用实例分享
Apr 10 PHP
PHP Curl出现403错误的解决办法
May 29 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
Jul 08 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
yii使用bootstrap分页样式的实例
Jan 17 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 PHP
PHP中关于php.ini参数优化详解
Feb 28 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 simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
JQuery 1.4 中的Ajax问题
2010/01/23 Javascript
poshytip 基于jquery的 插件 主要用于显示微博人的图像和鼠标提示等
2012/10/12 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
JS的get和set使用示例
2014/02/20 Javascript
javascript将异步校验表单改写为同步表单
2015/01/27 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
2018/09/13 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
详解js中的几种常用设计模式
2020/07/16 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
Python中基本的日期时间处理的学习教程
2015/10/16 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
Python线程之定位与销毁的实现
2019/02/17 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
打印tensorflow恢复模型中所有变量与操作节点方式
2020/05/26 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
xxx同志考察材料
2014/02/07 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
乡镇办公室工作决心书
2014/03/11 职场文书
公司授权委托书
2014/04/04 职场文书
2014年网络管理员工作总结
2014/12/01 职场文书
环卫处个人工作总结
2015/03/04 职场文书
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫
动画电影《龙珠超 超级英雄》延期上映
2022/03/20 日漫
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
《勇者辞职不干了》上卷BD发售宣传CM公开
2022/04/08 日漫