过滤响应仅返回部分内容

问题描述 投票:3回答:1

我有以下方法提取响应并将其包装在包装类中。

使用调试器,我可以看到responseContent具有应有的全部内容,但是当它被打印到屏幕上时,只有部分请求返回。

我可以看到变量data具有应有的整个值。

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    ContentCachingResponseWrapper responseWrapper = new ContentCachingResponseWrapper((HttpServletResponse) response);
    chain.doFilter(request, responseWrapper);
    String responseContent = new String(responseWrapper.getContentAsByteArray());
    BasicResponse<Object> fullResponse = new BasicResponse<>();
    fullResponse.setData(new ObjectMapper().readValue(responseContent, Object.class));
    String data = new ObjectMapper().writeValueAsString(fullResponse);
    response.getWriter().write(data);//data has the entire value
    response.getWriter().close();
}
java java-ee filter
1个回答
1
投票

很可能响应Content-Length标头设置的值低于新数据长度。确保使用与新数据长度匹配的新值设置此标头。

© www.soinside.com 2019 - 2024. All rights reserved.