Весенний http код состояния - java.lang.IllegalArgumentException: нет соответствующей константы - PullRequest
0 голосов
/ 02 июля 2019

Я использую Spring rest-шаблон для вызова остального URL, я получаю ответ от сервера, но код http-статуса недействителен, и Spring бросает, java.lang.IllegalArgumentException: нет соответствующей константы. Из-за этого исключения происходит сбой приложения, это похоже на ошибку в коде Spring. Поскольку полученный код состояния http отсутствует в списке, среда Spring ищет ошибку. Есть ли способ Spring справиться с этим?

1 Ответ

0 голосов
/ 02 июля 2019

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...
}
...