java – 如何在Zuul post过滤器中获取响应体?
发布时间:2020-12-15 00:11:05 所属栏目:Java 来源:网络整理
导读:在后置过滤器中使用Zuul作为代理时如何读取响应主体? 我试图像这样调用代码: @Componentpublic class PostFilter extends ZuulFilter { private static final Logger log = LoggerFactory.getLogger(PostFilter.class); @Override public String filterTyp
在后置过滤器中使用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个步骤:
>将ctx.getResponseDataStream()读入ByteArrayOutputStream >从第1点读取流将导致无法再次读取流,因此这样您就传递了尚未读取的新流 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |