即使提交響應,是否可以將響應字節寫入HTTPServletResponse的OutputStream? 我有一個Servlet過濾器,通過調用doFilter將請求轉發給CXFServlet。在doFilter之後,我明確地想要在OutputStream中寫入字節。目前,我在響應提交後寫入OutputStream時沒有得到響應。提交HTTPServletResponse後寫入outputStream
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
final HttpServletResponse response = (HttpServletResponse) servletResponse;
final ByteArrayPrintWriter pw = new ByteArrayPrintWriter();
HttpServletResponse wrappedResp = new HttpServletResponseWrapper(
response) {
public PrintWriter getWriter() {
return pw.getWriter();
}
public ServletOutputStream getOutputStream() {
return pw.getStream();
}
};
filterChain.doFilter(servletRequest, wrappedResp);
byte[] bytes = pw.toByteArray();
response.getOutputStream().write(bytes);
response.getOutputStream().flush();
response.getOutputStream().close();
// Do logging after response is sent to client.
}
您必須展示您的過濾器實現,因爲提交響應只是意味着狀態代碼和頭文件將被寫入。 –
@SotiriosDelimanolis:我添加了我的過濾器實現。 – apurva
所以你說客戶沒有迴應?你的日誌說什麼?你可以調試,以檢查「字節」實際上包含的東西? –