【发布时间】:2019-03-04 11:10:12
【问题描述】:
我有以下方法可以提取响应并将其包装在包装类中。
使用调试器,我可以看到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();
}
【问题讨论】:
-
会不会是在响应中设置了
Content-Length标头并且小于data长度? -
@KarolDowbecki 谢谢!由于我正在修改对象,因此保留了旧尺寸。如果您想获得奖励,请将其发布为答案。再次感谢
标签: java jakarta-ee filter