首页 > 其他分享 >Guzzle 入门教程

Guzzle 入门教程

时间:2024-03-11 15:35:11浏览次数:19  
标签:HTTP 请求 入门教程 echo json Guzzle response

Guzzle入门教程

Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。

  • 接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。
  • 发送同步或异步的请求均使用相同的接口。
  • 使用PSR-7接口来请求、响应、分流,允许你使用其他兼容的PSR-7类库与Guzzle共同开发。
  • 抽象了底层的HTTP传输,允许你改变环境以及其他的代码,如:对cURL与PHP的流或socket并非重度依赖,非阻塞事件循环。
  • 中间件系统允许你创建构成客户端行为。

安装

Guzzle是一个流行的PHP HTTP客户端库,用于发送HTTP请求并处理响应。以下是一个简单的Guzzle使用示例,包括GET和POST请求:

安装 Guzzle:

composer require guzzlehttp/guzzle

GET 请求示例:

<?php
require 'vendor/autoload.php'; // 引入Composer自动加载文件

use GuzzleHttp\Client;

// 创建一个Guzzle客户端实例
$client = new Client();

// 发送一个GET请求到某个API
$response = $client->request('GET', 'https://api.example.com/data');

// 获取响应的HTTP状态码
$status_code = $response->getStatusCode();
echo "Status Code: " . $status_code . PHP_EOL;

// 获取JSON格式响应体并解码为数组
$json_response = json_decode($response->getBody(), true);
print_r($json_response);

POST 请求示例(带JSON数据):

<?php
require 'vendor/autoload.php';

use GuzzleHttp\Client;
use GuzzleHttp\RequestOptions;

// 创建一个带有JSON内容的POST请求
$data = [
    'key1' => 'value1',
    'key2' => 'value2',
];

$client = new Client();

$options = [
    RequestOptions::HEADERS => [
        'Content-Type' => 'application/json',
    ],
    RequestOptions::JSON => $data,
];

$response = $client->request('POST', 'https://api.example.com/submit', $options);

$status_code = $response->getStatusCode();
echo "Status Code: " . $status_code . PHP_EOL;

// 解析响应体
$json_response = json_decode($response->getBody(), true);
print_r($json_response);

在上述例子中,我们创建了Client对象,并通过调用request()方法来发送HTTP请求。对于POST请求,我们设置了请求头中的Content-Typeapplication/json,并且将要发送的数据作为JSON格式放在选项中。

请根据实际API地址替换 https://api.example.com/datahttps://api.example.com/submit。同时,请确保你对目标API具有适当的访问权限。

Demo

$client = new GuzzleHttp\Client();
$res = $client->request('GET', 'https://api.github.com/user', [
    'auth' => ['user', 'pass']
]);
echo $res->getStatusCode();
// "200"
echo $res->getHeader('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
// {"type":"User"...'

// 发送一个异步请求
$request = new \GuzzleHttp\Psr7\Request('GET', 'http://httpbin.org');
$promise = $client->sendAsync($request)->then(function ($response) {
    echo 'I completed! ' . $response->getBody();
});
$promise->wait();

https://guzzle-cn.readthedocs.io/zh-cn/latest/



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

标签:HTTP,请求,入门教程,echo,json,Guzzle,response
From: https://www.cnblogs.com/lovebing/p/18066169

相关文章

  • PyQt入门教程(版本1)
    第1章PyQt5开发环境搭建和配置PyQt5工具可以快速实现简单的界面开发,包括界面设计、布局管理以及业务逻辑实现(信号与槽)。简单说就是使用PyQt5工具可以快速画一个控件摆放整齐、界面整洁有序、布局合理的界面。本文内容本文主要第1节PyQt5环境搭建和配置。主要内容包括:[!TIP......
  • 【Python入门教程】Python实现鸡兔同笼
    ​        今天跟大家分享一下很久之前自己做的鸡兔同笼求解问题的小游戏,使用公式和基本的判断语句即可实现,可以用来当练手或者消磨时间用。    大家在编代码的时候最重要就是先理清逻辑思路,例如应该套几层循环、分几个模块等等。然后在编码时可以先随意一点,变......
  • SQLite 入门教程
    不是MySQL用不起,而是SQLite更有性价比,绝大多数的Web应用SQLite都可以满足。SQLite是一个用C语言编写的开源、轻量级、快速、独立且高可靠性的SQL数据库引擎,它提供了功能齐全的数据库解决方案。SQLite几乎可以在所有的手机和计算机上运行,它被嵌入到无数人每天都......
  • MongoDB 入门教程
    基本概念数据库(Database)是集合的容器,相当于关系型DB中的数据库集合(Collection)数据库中的一组文档,相当于SQL中的表文档(Document)集合中的一条记录,相当于SQL的表中的一行。不同的文档之间不必有相同的结构,这一点是和SQL不同的。字段(Field)文档中的键值对,相当于SQL中的列。比......
  • 从零开始的 dbt 入门教程 (dbt core 开发进阶篇)
    引在上一篇文章中,我们花了专门的篇幅介绍了dbt更多实用的命令,那么我们继续按照之前的约定来聊dbt中你可能会遇到的疑惑以及有用的概念,如果你是dbt初学者,我相信如下知识点一定会对你有极大的帮助:了解dbt_project配置文件,以及不同字符的作用了解dbt工程化,为dev以及......
  • Python语言程序设计入门教程
      目  录第一章、概述    1.Python是什么    2.Python语言的特点    3.Python语言的缺点    4.Python程序的执行过程10   5.安装Python11  6.运行Python程序17        7.Python集成开发环境21  第二章、......
  • python入门教程详细从零基础入门到精通一站式解决方案
    前言众所周知,Python以优雅、简洁著称,入行门槛低,可以从事Linux运维、PythonWeb网站工程师python自动化测试、数据分析、人工智能等职位,薪资待遇呈上涨趋势,对于许多未曾涉足IT行业「小白」来说,深入地学习python是一件十分困难的事。我这个小萌新当时什么也不懂,就傻乎乎地开始了学......
  • Qt QCustomPlot 入门教程
    简述QCustomPlot是一个基于QtC++的图形库,用于绘制和数据可视化-制作漂亮的2D图-曲线图、趋势图、坐标图、柱状图等,并为实时可视化应用程序提供高性能服务。它没有进一步的依赖关系,并有着良好的文档记录。QCustomPlot可以导出为各种格式,比如:PDF文件和位图(如:PNG、JPG......
  • RUST web框架axum快速入门教程6之测试
    本文主要讨论axum的测试,axum对于测试的支持还是比较完善的,我们可以测试状态码,HTTP头信息,响应体等内容,因为框架实现的原因,其实axum很依赖tower。往期文章:https://youerning.top/post/axum/quickstart-1https://youerning.top/post/axum/quickstart-2https://youerning.top/pos......
  • Python逆向爬虫入门教程: 酷狗音乐加密参数signature逆向解析
    数据来源分析......