Spring HTTP状态代码-Java.lang.IllegalArgumentException:无匹配常数



我正在使用弹簧式静止板来调用休息URL,我从服务器中获得响应,但是HTTP-STATUS代码无效,而Spring Throws,Java.lang。iLlegalArgumentException:无匹配常数。由于这个例外,应用程序失败了,这看起来像是弹簧代码中的一个错误。由于收到的HTTP状态代码未在列表中,Spring Framework正在寻找FORIT失败。有没有弹簧的方法来处理它?

Spring似乎在其枚举中使用标准状态代码。您可以在此处找到状态代码:org.springframework.http.HttpStatus

您查询的API可能没有返回标准的HTTP状态代码。最好的选择是创建一个自定义错误处理程序,这样:

var r = new RestTemplate();
r.setErrorHandler(new ResponseErrorHandler() {
  @Override
  public boolean hasError(ClientHttpResponse response) throws IOException {
    return response.getRawStatusCode() != 550;
  }
  @Override
  public void handleError(ClientHttpResponse response) {
    // Do nothing?
  }
});
var response = r.exchange("https://httpbin.org/status/550", HttpMethod.GET, null, String.class);
System.out.println(response.getStatusCodeValue());

我们要说的是,如果返回的状态代码为550(不是标准代码(,我们不想对此做任何事情。

当然,您拥有的另一个选择是捕获异常并对此做些事情。

try {
  // Call the API here
} catch (IllegalArgumentException e) {
  // Do something about it here...
}

最新更新