streamingresponsebody和contentcachingresponsewrapper

wribegjk  于 2021-07-06  发布在  Java
关注(0)|答案(0)|浏览(306)

我使用spring中的streamingresponsebody将结果集流化为outputstream。我们有一个自定义的java过滤器,它使用contentcachingresponewrapper。
由于这个过滤器,我的输出是空的,当我删除过滤器时,我能够得到流数据
我也在filter的末尾添加了responsewrapper.copybodytoresponse(),但没有结果。
下面是我的过滤器。

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
    try {

        ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper((HttpServletResponse) response);
        chain.doFilter(request, responseWrapper);

        boolean isInternalRequest = validateIfReqIsInternal();

        //Implementing Output Encoding only for External Calls
        if(!isInternalRequest) {
            outputEncoding(responseWrapper);
        }

        responseWrapper.copyBodyToResponse();
    } catch (Exception e) {
        logger.error("Error with Input Payload");
        throw new ServletException("Error with Input Payload {} ", e);
    }
}

我想知道是否有解决这个问题的办法。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题