Продолжить после исключения или ошибки в вызове Rest Api с использованием OAuth2RestTemplate - PullRequest
1 голос
/ 21 марта 2019

я делаю вызов покоя, используя Spring Oauth2RestTemplate. Я пытаюсь перехватить любое исключение при попытке сделать вызов restAPI и продолжить поток исключений.

Два способа я попробовал:
Способ I (Использование try catch).

public ResponseEntity<Object> getResponse(URI uri, HttpHeaders httpHeaders,
            Object obj) {

    ResponseEntity<Object> response = null;
    try {
        response = restTemplate.exchange(uri, HttpMethod.POST, new HttpEntity<>(obj, httpHeaders),
                Object.class);

    } catch (Exception serverEx) {
        LOGGER.error("ERROR while calling API.Full Exception: ",serverEx);
        response.getBody().setLink(object.getUrl());
    }

    return response;
}

Способ II (пользовательская обработка).

public class RestTemplateResponseErrorHandler implements ResponseErrorHandler {

 private static final Logger LOGGER = LogManager.getLogger(RestTemplateResponseErrorHandler.class);

@Override
public boolean hasError(ClientHttpResponse httpResponse) throws IOException {
    return (httpResponse.getStatusCode().series() == Series.CLIENT_ERROR
            || httpResponse.getStatusCode().series() == Series.SERVER_ERROR);
}

@Override
public void handleError(ClientHttpResponse httpResponse) {
    //Log The Error but contibue the flow
}
}

Но ни в коем случае выполнение не будет остановлено. Я хочу продолжить процесс исполнения. если вызов не удался, я хочу обработать его и продолжить поток. Кто-нибудь может подсказать, что здесь происходит?

Исключение:

Caused by: java.io.IOException: Attempted read from closed stream.
at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:131)
at org.apache.http.conn.EofSensorInputStream.read(EofSensorInputStream.java:118)
at java.io.FilterInputStream.read(FilterInputStream.java:83)
at java.io.PushbackInputStream.read(PushbackInputStream.java:139)
at org.springframework.web.client.MessageBodyClientHttpResponseWrapper.hasEmptyMessageBody(MessageBodyClientHttpResponseWrapper.java:102)
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:82)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:932)
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:916)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:663)
... 223 more

Ответ об ошибке OutboundJaxrsResponse {status = 500, причина = внутренняя ошибка сервера, hasEntity = true, закрыто = false, буферизовано = false}

Есть предложения по этому поводу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...