|  | @@ -4,12 +4,12 @@ import java.io.BufferedReader;
 | 
											
												
													
														|  |  import java.io.ByteArrayInputStream;
 |  |  import java.io.ByteArrayInputStream;
 | 
											
												
													
														|  |  import java.io.IOException;
 |  |  import java.io.IOException;
 | 
											
												
													
														|  |  import java.io.InputStreamReader;
 |  |  import java.io.InputStreamReader;
 | 
											
												
													
														|  | -import java.nio.charset.Charset;
 |  | 
 | 
											
												
													
														|  |  import javax.servlet.ReadListener;
 |  |  import javax.servlet.ReadListener;
 | 
											
												
													
														|  |  import javax.servlet.ServletInputStream;
 |  |  import javax.servlet.ServletInputStream;
 | 
											
												
													
														|  | 
 |  | +import javax.servlet.ServletResponse;
 | 
											
												
													
														|  |  import javax.servlet.http.HttpServletRequest;
 |  |  import javax.servlet.http.HttpServletRequest;
 | 
											
												
													
														|  |  import javax.servlet.http.HttpServletRequestWrapper;
 |  |  import javax.servlet.http.HttpServletRequestWrapper;
 | 
											
												
													
														|  | -import com.ruoyi.common.utils.StringUtils;
 |  | 
 | 
											
												
													
														|  | 
 |  | +import com.ruoyi.common.utils.http.HttpHelper;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  /**
 |  |  /**
 | 
											
												
													
														|  |   * 构建可重复读取inputStream的request
 |  |   * 构建可重复读取inputStream的request
 | 
											
										
											
												
													
														|  | @@ -20,10 +20,13 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
 | 
											
												
													
														|  |  {
 |  |  {
 | 
											
												
													
														|  |      private final byte[] body;
 |  |      private final byte[] body;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -    public RepeatedlyRequestWrapper(HttpServletRequest request) throws IOException
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  |          super(request);
 |  |          super(request);
 | 
											
												
													
														|  | -        body = readBytes(request.getReader(), "utf-8");
 |  | 
 | 
											
												
													
														|  | 
 |  | +        request.setCharacterEncoding("UTF-8");
 | 
											
												
													
														|  | 
 |  | +        response.setCharacterEncoding("UTF-8");
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        body = HttpHelper.getBodyString(request).getBytes("UTF-8");
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
										
											
												
													
														|  | @@ -35,50 +38,35 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public ServletInputStream getInputStream() throws IOException
 |  |      public ServletInputStream getInputStream() throws IOException
 | 
											
												
													
														|  |      {
 |  |      {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |          final ByteArrayInputStream bais = new ByteArrayInputStream(body);
 |  |          final ByteArrayInputStream bais = new ByteArrayInputStream(body);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |          return new ServletInputStream()
 |  |          return new ServletInputStream()
 | 
											
												
													
														|  |          {
 |  |          {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              @Override
 |  |              @Override
 | 
											
												
													
														|  | -            public boolean isFinished()
 |  | 
 | 
											
												
													
														|  | 
 |  | +            public int read() throws IOException
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                return false;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                return bais.read();
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              @Override
 |  |              @Override
 | 
											
												
													
														|  | -            public boolean isReady()
 |  | 
 | 
											
												
													
														|  | 
 |  | +            public boolean isFinished()
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  |                  return false;
 |  |                  return false;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              @Override
 |  |              @Override
 | 
											
												
													
														|  | -            public void setReadListener(ReadListener listener)
 |  | 
 | 
											
												
													
														|  | 
 |  | +            public boolean isReady()
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | 
 |  | +                return false;
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |              @Override
 |  |              @Override
 | 
											
												
													
														|  | -            public int read() throws IOException
 |  | 
 | 
											
												
													
														|  | 
 |  | +            public void setReadListener(ReadListener readListener)
 | 
											
												
													
														|  |              {
 |  |              {
 | 
											
												
													
														|  | -                return bais.read();
 |  | 
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |          };
 |  |          };
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -    /**
 |  | 
 | 
											
												
													
														|  | -     * 通过BufferedReader和字符编码集转换成byte数组
 |  | 
 | 
											
												
													
														|  | -     */
 |  | 
 | 
											
												
													
														|  | -    private byte[] readBytes(BufferedReader br, String encoding) throws IOException
 |  | 
 | 
											
												
													
														|  | -    {
 |  | 
 | 
											
												
													
														|  | -        String str = null, retStr = "";
 |  | 
 | 
											
												
													
														|  | -        while ((str = br.readLine()) != null)
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -            retStr += str;
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        if (StringUtils.isNotBlank(retStr))
 |  | 
 | 
											
												
													
														|  | -        {
 |  | 
 | 
											
												
													
														|  | -            return retStr.getBytes(Charset.forName(encoding));
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | -        return null;
 |  | 
 | 
											
												
													
														|  | -    }
 |  | 
 | 
											
												
													
														|  |  }
 |  |  }
 |