package com.nokia.financeapi.config.web; 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.IOException; /** * 解决流只能读取一次问题 */ public class MyHttpServletResponseWrapper extends HttpServletResponseWrapper { private ByteArrayOutputStream byteArrayOutputStream; private ServletOutputStream servletOutputStream; public MyHttpServletResponseWrapper(HttpServletResponse response) { super(response); byteArrayOutputStream = new ByteArrayOutputStream(); servletOutputStream = new ServletOutputStream() { @Override public boolean isReady() { return false; } @Override public void setWriteListener(WriteListener writeListener) { // } @Override public void write(int b) throws IOException { response.getOutputStream().write(b); byteArrayOutputStream.write(b); } }; } @Override public ServletOutputStream getOutputStream() { return servletOutputStream; } public byte[] toByteArray() { return byteArrayOutputStream.toByteArray(); } }