神马都是浮云  2023-09-06 17:06 采纳率: 0%
浏览 41

自定义feign的返回拦截器,遭遇返回流只能读取一次的情况,这个如何处理?

自定义feign的返回拦截器,遭遇返回流只能读取一次的情况,这个如何处理?

@Component
public class FeignResponseInterceptor implements ResponseInterceptor {
    @Override
    public Object aroundDecode(InvocationContext invocationContext) throws IOException {
        Request request = invocationContext.response().request();
        Response response = invocationContext.response();
        Response logResponse = Response.builder()
                .request(request)
                .body(response.body())
                .build();
        String result = StreamUtils.copyToString(logResponse.body().asInputStream(), StandardCharsets.UTF_8);
        return invocationContext.proceed();
    }
}

取出result进行返回日志打印后,返回给接口调用处就是null了,这个谁有这方面的处理经验呢?
不采用result转成Type后return回去的方法,单纯怎么搞才能将流返回回去?

  • 写回答

2条回答 默认 最新

  • luj_1768 2023-09-09 13:22
    关注

    好像与流操作的定义有关。通常的流应该是读取后自动擦除数据的,主要是防止数据堆积阻碍后面的数据正常操作。当初,针对流有一些限定标记,好像是permanent,但是产品里可能没有相关实现(因为有关处理可能会比较复杂,也有可能不做特别申请没有提供服务)。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月6日

悬赏问题

  • ¥30 arduino vector defined in discarded section `.text' of wiring.c.o (symbol from plugin)
  • ¥20 关于#c++#的问题:(2)运算二叉树·表达式一般由一个运算符和两个操作数组成:(相关搜索:二叉树遍历)
  • ¥20 如何训练大模型在复杂因素组成的系统中求得最优解
  • ¥15 关于#r语言#的问题:在进行倾向性评分匹配时,使用“match it"包提示”错误于eval(family$initialize): y值必需满足0 <= y <= 1“请问在进行PSM时
  • ¥45 求17位带符号原码乘法器verilog代码
  • ¥20 PySide6扩展QLable实现Word一样的图片裁剪框
  • ¥15 matlab数据降噪处理,提高数据的可信度,确保峰值信号的不损失?
  • ¥15 怎么看我在bios每次修改的日志
  • ¥15 python+mysql图书管理系统
  • ¥15 Questasim Error: (vcom-13)