处理GuzzleHttp返回的403错误

当GuzzleHttp库在发送HTTP请求时,如果服务器返回403 Forbidden状态码,它会抛出一个 GuzzleHttp\Exception\ClientException 异常。如果希望在遇到403错误时不终止程序执行,并能获取到响应数据,可以使用 try/catch 块来捕获这个异常并处理响应内容:

Php
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错误的原因,并决定如何继续处理或者提供反馈给用户。

有话要说