直接安装 guzzlehttp/guzzle 即可,guzzlehttp_composer 是非法包名;POST 表单用 form_params,JSON 用 json 参数;错误处理需手动判断状态码或启用 http_errors。

直接装 guzzlehttp/guzzle 就行,不用单独配 guzzlehttp_composer——这根本不是个合法包名,搜不到、装不上,是常见拼写误解。
为什么 composer require guzzlehttp_composer 会报错
因为 guzzlehttp_composer 不是真实存在的 Composer 包。Guzzle 的官方包名是 guzzlehttp/guzzle,下划线 _ 是非法分隔符,Composer 只认 /(vendor/name 格式)。
-
composer require guzzlehttp_composer→ 报错[InvalidArgumentException] Package guzzlehttp_composer not found -
composer require guzzlehttp/guzzle→ 正常安装 v7.x(PHP 8.0+ 推荐)或自动适配你当前 PHP 版本 - 如果你用的是 PHP 7.2–7.4,它可能装 v6;PHP 8.0+ 默认上 v7,v7 不再支持 cURL
装完怎么发 GET 请求(最简能跑通的写法)
别一上来就配中间件、重试策略、异步——先让 GET 成功返回 JSON 或 HTML 再说。
- 确保已执行
composer require guzzlehttp/guzzle,且vendor/autoload.php已引入 - 基础请求只需三行:
$client = new \GuzzleHttp\Client();→$res = $client->get('https://httpbin.org/get');→echo $res->getBody(); - 如果遇到
cURL error 60: SSL certificate problem,临时加['verify' => false]参数(仅开发),生产必须配好 CA 证书路径,比如['verify' => '/etc/ssl/certs/ca-certificates.crt']
POST 提交表单或 JSON 的关键区别
很多人卡在 POST 不成功,问题往往出在 Content-Type 和数据格式没对齐。
- 提交表单(
application/x-www-form-urlencoded):用'form_params' => ['key' => 'value'],Guzzle 自动设 header 和编码 - 提交 JSON(
application/json):用'json' => ['key' => 'value'],Guzzle 自动序列化 + 设 header;别手贱再json_encode()一遍,否则变成双层 JSON 字符串 - 传 raw body(比如 XML):用
'body' => $xml_string+ 手动设'headers' => ['Content-Type' => 'text/xml']
真正容易被忽略的是错误处理——$res->getStatusCode() 只告诉你 HTTP 状态码,但 Guzzle 默认不抛异常。4xx/5xx 响应不会自动 throw,得自己判断 if ($res->getStatusCode() >= 400),或者初始化 client 时加 ['http_errors' => true] 让它主动炸。










