Когда я пытаюсь реализовать 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));
}
}