gpt4 book ai didi

java - 如何在 Zuul post filter 中获取响应体?

转载 作者:搜寻专家 更新时间:2023-10-30 21:45:11 24 4
gpt4 key购买 nike

post 过滤器中使用 Zuul 作为代理时如何读取响应主体?

我正在尝试这样调用代码:

@Component
public class PostFilter extends ZuulFilter {

private static final Logger log = LoggerFactory.getLogger(PostFilter.class);

@Override
public String filterType() {
return "post";
}

@Override
public int filterOrder() {
return 2000;
}

@Override
public boolean shouldFilter() {
return true;
}

@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
ctx.getResponseBody(); // null

// cant't do this, cause input stream is used later in other filters and I got InputStream Closed exception
// GZIPInputStream gzipInputStream = new GZIPInputStream(stream);
return null;
}

}

最佳答案

我已经设法克服了这个问题。该解决方案包括 4 个步骤:

  1. ctx.getResponseDataStream() 读入 ByteArrayOutputStream
  2. 将 OutputStream 复制到 2 个 InputStreams。
  3. 将其中之一用于您的自定义目的。
  4. 使用第二个重新分配给上下文:context.setResponseBody(inputStream)
    • 从点 1 读取流会导致无法再次读取该流,因此您将通过这种方式传递一个尚未读取的新流

关于java - 如何在 Zuul post filter 中获取响应体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com