package com.zy.asrs.wms.common.security; import javax.servlet.ServletOutputStream; import javax.servlet.WriteListener; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; public class CachedBodyHttpServletResponse extends HttpServletResponseWrapper { private final ByteArrayOutputStream cachedBody; private final PrintWriter writer; public CachedBodyHttpServletResponse(HttpServletResponse response) { super(response); this.cachedBody = new ByteArrayOutputStream(); this.writer = new PrintWriter(cachedBody); } @Override public PrintWriter getWriter() { return writer; } @Override public ServletOutputStream getOutputStream() { return new ServletOutputStream() { @Override public void write(int b) { cachedBody.write(b); } @Override public boolean isReady() { return true; } @Override public void setWriteListener(WriteListener writeListener) { } }; } public byte[] getContent() { writer.flush(); return cachedBody.toByteArray(); } }