php 8 中应使用 guzzle 7.2+ 版本,通过 composer require guzzlehttp/guzzle:^7.2 安装;初始化 client 后调用 get() 或 post() 发起请求,注意显式处理响应体、配置超时与异常捕获。

PHP 8 中使用 Guzzle 发送 HTTP 请求非常简单,关键是安装兼容 PHP 8 的 Guzzle 版本(推荐 Guzzle 7.x),并正确初始化客户端和发起请求。
确认 Guzzle 版本兼容 PHP 8
Guzzle 7.2+ 完全支持 PHP 8。如果你用 Composer 安装,它会自动选择兼容版本:
- 运行
composer require guzzlehttp/guzzle:^7.2 - 避免使用 Guzzle 6.x(虽部分可用,但官方不保证 PHP 8 全面兼容)
- 检查
composer.json中是否引入了"guzzlehttp/guzzle": "^7.2"
基础 GET 请求示例
创建客户端后,直接调用 get() 方法即可:
<?php use GuzzleHttp\Client;
$client = new Client();
try {
$response = $client->get('https://httpbin.org/get', [
'query' => ['name' => '张三', 'age' => 25],
'timeout' => 10,
]);
echo $response->getStatusCode(); // 200
echo $response->getBody()->getContents(); // JSON 响应体
} catch (\GuzzleHttp\Exception\RequestException $e) {
echo '请求失败:' . $e->getMessage();
}
?>
POST 提交表单或 JSON 数据
根据接口要求选择合适的数据格式:
-
发送表单数据(application/x-www-form-urlencoded):
'form_params' => ['key' => 'value'] -
发送 JSON(application/json):
'json' => ['key' => 'value'](Guzzle 自动设 header 并序列化) -
自定义 body 和 header:
'body' => json_encode([...])+'headers' => ['Content-Type' => 'application/json']
设置常用选项与错误处理
生产环境建议显式配置超时、重试、基础 URL 等,并捕获具体异常类型:
$client = new Client([
'base_uri' => 'https://api.example.com/',
'timeout' => 5.0,
'http_errors' => false, // 避免 4xx/5xx 自动抛异常
'retry' => [
'max_attempts' => 3,
'delay' => 1000, // ms
],
]);
try {
$res = $client->post('v1/users', [
'json' => ['name' => '李四'],
]);
if ($res->getStatusCode() >= 400) {
throw new RuntimeException('API 返回错误状态:' . $res->getStatusCode());
}
$data = json_decode($res->getBody()->getContents(), true);
} catch (\GuzzleHttp\Exception\ConnectException $e) {
// 连接失败(DNS、网络不通等)
} catch (\GuzzleHttp\Exception\ClientException $e) {
// 4xx 错误(如 404、401)
} catch (\GuzzleHttp\Exception\ServerException $e) {
// 5xx 错误(如 500、503)
}php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











