1. get and post request methods
(1) request.getParameterNames(); after all parameter keys are obtained. Traverse request.getParameter(key) to get value
(2)request.getParameterMap() . The parameter key and value are included directly, which is simple and convenient
Map<String, String[]>maps = request.getParameterMap();
for (Map.Entry<String, String[]> entry : maps.entrySet()) { String cs = entry.getKey() + ":"+Arrays.toString(entry.getValue())+";"; }
2. The request type is request payload
The file flow is not introduced here, mainly for requests with @ RequestBody mode on the back end
This kind of data cannot be obtained through the above two methods. It is stored in the stream and needs to be obtained through getInputStream() or getReader()
public String getRequestData(HttpServletRequest httpServletRequest){ HttpServletRequestWrapper httpServletRequestWrapper = new HttpServletRequestWrapper(httpServletRequest); StringBuilder sb = new StringBuilder(); BufferedReader reader = null; InputStreamReader inputStreamReader=null; ServletInputStream servletInputStream =null; try { servletInputStream = httpServletRequestWrapper.getInputStream(); inputStreamReader=new InputStreamReader (servletInputStream, Charset.forName("UTF-8")); reader = new BufferedReader(inputStreamReader); String line = ""; while ((line = reader.readLine()) != null) { sb.append(line); } } catch (IOException e) { return ""; }finally { try { if(servletInputStream!=null){ servletInputStream.close(); } if(inputStreamReader!=null){ inputStreamReader.close(); } if(reader!=null){ reader.close(); } } catch (IOException e) { } } return sb.toString (); }
It should be noted that getInputStream() can only be used once to get the stream. If it is called multiple times, it needs to be cached, otherwise the data of the stream will not reach the Controller layer and a 400 error will be reported