Spring http 状态代码 - java.lang.IllegalArgumentException: 没有匹配的常量
Spring http status code - java.lang.IllegalArgumentException: No matching constant
我正在使用 spring rest-template 来调用其余的 URL ,我收到了服务器的响应,但是 http-status 代码无效并且 Spring抛出,java.lang.IllegalArgumentException: 没有匹配的常量。由于此异常,应用程序失败,这看起来像是 Spring 代码中的错误。由于收到的 http 状态代码不在列表中 spring 框架正在寻找它失败。有没有 Spring 的方法来处理它?
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...
}
我正在使用 spring rest-template 来调用其余的 URL ,我收到了服务器的响应,但是 http-status 代码无效并且 Spring抛出,java.lang.IllegalArgumentException: 没有匹配的常量。由于此异常,应用程序失败,这看起来像是 Spring 代码中的错误。由于收到的 http 状态代码不在列表中 spring 框架正在寻找它失败。有没有 Spring 的方法来处理它?
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...
}