如何完整显示GuzzleHttp错误信息并移除截断标识?
解决GuzzleHttp错误信息被截断的问题
方法1:从异常对象读取完整响应内容
捕获ServerException后,直接通过异常的响应对象获取完整响应体,绕过默认的截断提示:
try { $response = $client->post('http://127.0.0.1:8000/api/api', [ // 你的请求参数 ]); } catch (\GuzzleHttp\Exception\ServerException $e) { // 获取完整响应内容 $fullError = $e->getResponse()->getBody()->getContents(); // 输出或记录完整错误信息 var_dump($fullError); }
方法2:关闭Guzzle自动抛出异常的配置
创建客户端时设置http_errors为false,自行处理响应状态,直接读取完整内容:
$client = new \GuzzleHttp\Client([ 'http_errors' => false, ]); $response = $client->post('http://127.0.0.1:8000/api/api', [ // 你的请求参数 ]); // 检查响应状态码,处理错误 if ($response->getStatusCode() >= 400) { $fullError = $response->getBody()->getContents(); var_dump($fullError); }
方法3:重新格式化异常提示信息
如果需要保留自动抛异常的逻辑,可在捕获时重新拼接完整的错误描述:
catch (\GuzzleHttp\Exception\ServerException $e) { $fullMsg = sprintf( '请求失败:POST %s 返回 %d 错误,详情:%s', $e->getRequest()->getUri(), $e->getResponse()->getStatusCode(), $e->getResponse()->getBody()->getContents() ); echo $fullMsg; }
提示:如果响应内容过大,建议将完整错误信息写入日志文件,避免直接输出影响可读性。
内容的提问来源于stack exchange,提问作者X.Jop
相关产品推荐
相关产品推荐

