Openfeign ErrorDecoder引起java.io.IOException: stream is closed(流已关闭)。

问题描述 投票:0回答:1

当我试图实现 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));
    }
}
java stream feign openfeign
1个回答
0
投票

我经历了这个噩梦,这都是IDE的错。

调试模式下的断点是在调试模式下的 response.body().asReader 导致流关闭。

简单的看完正文就开始调试,一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.