This commit is contained in:
qaq
2025-06-17 16:24:47 +08:00
parent 08cb8a4b53
commit ce6f5917c2
5 changed files with 59 additions and 15 deletions
@@ -28,6 +28,7 @@ import org.springframework.http.client.ClientHttpResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.client.ResponseErrorHandler;
import org.springframework.web.client.RestTemplate;
import org.springframework.util.StreamUtils;
import java.io.IOException;
import java.net.URI;
@@ -100,16 +101,34 @@ public class HttpUtils implements ApplicationContextAware {
}
/**
* 自定义错误处理器,不抛出异常
* 自定义错误处理器,不抛出异常但记录错误信息
*/
private static class NoOpResponseErrorHandler implements ResponseErrorHandler {
@Override
public boolean hasError(ClientHttpResponse response) throws IOException {
return false;
HttpStatus statusCode = response.getStatusCode();
return statusCode.series() == HttpStatus.Series.CLIENT_ERROR ||
statusCode.series() == HttpStatus.Series.SERVER_ERROR;
}
@Override
public void handleError(ClientHttpResponse response) throws IOException {
HttpStatus statusCode = response.getStatusCode();
String statusText = response.getStatusText();
String responseBody = "";
try {
// 使用Spring的StreamUtils来读取响应体
responseBody = new String(
StreamUtils.copyToByteArray(response.getBody()),
StandardCharsets.UTF_8
);
} catch (Exception e) {
responseBody = "无法读取响应体: " + e.getMessage();
}
logger.error("HTTP请求错误 - 状态码: {} {}, 响应体: {}",
statusCode.value(), statusText, responseBody);
}
}