java - Openfeign ErrorDecoder 导致 java.io.IOException : stream is closed

标签 java stream feign openfeign

当我尝试实现 ErrorDecoder 来解码 feign 异常时,我发现 response.body() 中的流已关闭,因此当我尝试读取该流时并转换为字符串,它抛出java.io.IOException:流已关闭。这真的很困惑,因为在解码器之前,我没有做任何事情来高级关闭流。

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));
    }
}

最佳答案

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

Debug模式下的断点位于导致流关闭的 response.body().asReader 之上/之前。

阅读正文后就开始调试,一切都很顺利。

关于java - Openfeign ErrorDecoder 导致 java.io.IOException : stream is closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61472139/

相关文章:

java - 使用 Elasticsearch 的 java api 如何在索引期间映射文档 ID

Java:如何将两个 String[] 对象放入一个对象并将它们传递给下一个方法?

java时差输出负值和错误值

Node.js 流管道和垃圾收集

通过 TCP 的 C# 反序列化

spring-cloud-feign - openfeign 和 feign 的区别

Java-获取 IndexOutOfBoundsException

spring - 如何在 FeignClient 中使用多个查询字符串参数调用 url?

java - HystrixFeign 客户端回退中获取原因的问题

javascript - NodeJS 获取流式文件下载的字节数