|  | @@ -4,12 +4,12 @@ import java.io.BufferedReader;
 | 
	
		
			
				|  |  |  import java.io.ByteArrayInputStream;
 | 
	
		
			
				|  |  |  import java.io.IOException;
 | 
	
		
			
				|  |  |  import java.io.InputStreamReader;
 | 
	
		
			
				|  |  | -import java.nio.charset.Charset;
 | 
	
		
			
				|  |  |  import javax.servlet.ReadListener;
 | 
	
		
			
				|  |  |  import javax.servlet.ServletInputStream;
 | 
	
		
			
				|  |  | +import javax.servlet.ServletResponse;
 | 
	
		
			
				|  |  |  import javax.servlet.http.HttpServletRequest;
 | 
	
		
			
				|  |  |  import javax.servlet.http.HttpServletRequestWrapper;
 | 
	
		
			
				|  |  | -import com.ruoyi.common.utils.StringUtils;
 | 
	
		
			
				|  |  | +import com.ruoyi.common.utils.http.HttpHelper;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /**
 | 
	
		
			
				|  |  |   * 构建可重复读取inputStream的request
 | 
	
	
		
			
				|  | @@ -20,10 +20,13 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      private final byte[] body;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    public RepeatedlyRequestWrapper(HttpServletRequest request) throws IOException
 | 
	
		
			
				|  |  | +    public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |          super(request);
 | 
	
		
			
				|  |  | -        body = readBytes(request.getReader(), "utf-8");
 | 
	
		
			
				|  |  | +        request.setCharacterEncoding("UTF-8");
 | 
	
		
			
				|  |  | +        response.setCharacterEncoding("UTF-8");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        body = HttpHelper.getBodyString(request).getBytes("UTF-8");
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -35,50 +38,35 @@ public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public ServletInputStream getInputStream() throws IOException
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          final ByteArrayInputStream bais = new ByteArrayInputStream(body);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          return new ServletInputStream()
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              @Override
 | 
	
		
			
				|  |  | -            public boolean isFinished()
 | 
	
		
			
				|  |  | +            public int read() throws IOException
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -                return false;
 | 
	
		
			
				|  |  | +                return bais.read();
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              @Override
 | 
	
		
			
				|  |  | -            public boolean isReady()
 | 
	
		
			
				|  |  | +            public boolean isFinished()
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  return false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              @Override
 | 
	
		
			
				|  |  | -            public void setReadListener(ReadListener listener)
 | 
	
		
			
				|  |  | +            public boolean isReady()
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              @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;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  |  }
 |