Spring HttpClientErrorException 和 RestClientException 获取请求 URL

Spring HttpClientErrorException and RestClientException getting request URL

我在 try-catch 块中有超过 1 个 http 调用,例如:

try {
    HttpHeaders httpHeaders = new HttpHeaders();
    ResponseEntity<String> sendGet = http.sendGet(someUrl1, httpHeaders);
    ResponseEntity<String> sendPost = http.sendPost(someUrl2, httpHeaders);                 
                    
}catch(HttpClientErrorException e) {

   //print call url here someUrl1/someUrl2
   printException(e);
}
catch (Exception e) {
    printException(e);
    //general e             
}

//Print exception
public void printException(Exception e){
     //log URL here
}

我想在捕捉到异常时打印失败的 URL,但我没有找到可以使用的 HttpClientErrorExceptionRestClientException 属性。

编辑一般情况:

我认为你不应该使用 HttpClientErrorException 来获取 url,你在调用每个请求之前知道 URL,所以我的建议是:

创建一个接收 post 方法、URL 和 headers 参数的通用发送方法

为每个请求调用你的方法,它也会根据当前的URL

处理异常

问题描述的简单案例:

您可以为每个请求拆分为 2 个 try 和 catch 块

或添加一个布尔值(或 currentUrl 字符串变量)

boolean isFirstRequestFinished = false;

在第一次请求后将其设置为 true 并签入 catch 块

if (isFirstRequestFinished) {