Openfeign ErrorDecoder вызвал java .io.IOException: поток закрыт - PullRequest
0 голосов
/ 28 апреля 2020

Когда я пытаюсь реализовать ErrorDecoder для декодирования симметричного исключения, я обнаружил, что поток в response.body() закрыт, поэтому, когда я пытаюсь прочитать поток и преобразовать в строку, он выдает java.io.IOException: stream is closed. Это действительно запутано, потому что до декодера я ничего не делал, чтобы закрыть расширенный поток.

public class FeignClientErrorDecoder implements ErrorDecoder {
    @Override
    public Exception decode(String methodKey, Response response) {
        log.info("feign client response: {}", response);
        String body = null;
        try {
            body = Util.toString(response.body().asReader(Charset.defaultCharset()));
        } catch (IOException e) {
            log.error("feign.IOException", e);
        }
        return new ServiceException(MessageCode.builder(ExceptionCodeEnum.ERROR));
    }
}
...