Guzzle遇到4xx和5xx的状态码时返回异常的解决办法

前言

写了个API商城的项目,就是向外收费提供API接口。其中实名认证相关的接口是调用的阿里云的,他们有个很操蛋的设定——如果认证失败会返回555状态码。要知道5xx可是服务器出错才会返回的,这种返回值说实话对api调用方不是很友好。我的习惯是,只要接口调用成功就应该返回2xx的状态码,然后在返回值里面加入code字段来标注错误码。

阿里的这种返回方式触发了Guzzle的异常,很头疼。

解决办法

后来耐心翻阅了一下官方手册,发现可以在new对象的时候加入http_errors=false的选项来禁止Guzzle生成异常。

具体示例代码如下:

$client = new Client(['http_errors' => false]);
$response = $client->request('GET', 'https://xxx.com/xxx', ['headers' => $post_head, 'form_params' => $post_data]);

结语

实际应用中遇到任何问题可以在评论区留言。我会协助你解决的!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Captcha Code