当GuzzleHttp库在发送HTTP请求时,如果服务器返回403 Forbidden状态码,它会抛出一个 GuzzleHttp\Exception\ClientException
异常。如果希望在遇到403错误时不终止程序执行,并能获取到响应数据,可以使用 try/catch 块来捕获这个异常并处理响应内容:
use GuzzleHttp\Client;
use GuzzleHttp\Exception\GuzzleException;
$client = new Client();
try {
$response = $client->request('GET', 'http://example.com/api/resource');
} catch (GuzzleException $e) {
if ($e instanceof GuzzleHttp\Exception\ClientException && $e->getResponse()->getStatusCode() === 403) {
// 处理403错误
$responseBody = (string) $e->getResponse()->getBody();
// 对$responseBody进行解析或记录日志等操作
echo "Received a 403 Forbidden response: {$responseBody}";
} else {
// 其他类型的异常处理
throw $e;
}
}
// 如果没有发生异常,则正常使用$response对象
if ($response->getStatusCode() == 200) {
$responseData = json_decode($response->getBody(), true);
// 处理正常响应的数据...
}
通过上述代码,可以捕获到403异常,并从异常对象中提取响应体内容。根据业务逻辑,可能需要进一步分析403错误的原因,并决定如何继续处理或者提供反馈给用户。
有话要说