我们可以通过
- request.getParameter
- 读取requust.inputStream
获取请求参数
get url参数 body中的参数
json getparameter只能获取url参数 只能通过inputStream获取body中的参数
form-data 两者都只能通过getParam获取 inputStream中获取不到body中的参数
x-www- getparam只能获取url参数,body里的不行 只能从inputStream中获取body中的参数
post
json getparam只能获取url参数 只能从inputStream获取
form-data 两者都只能通过getParam获取 从inputStream中获取不到
x-www- getparam可以获取url和body中的参数 只能从inputStream获取
1. 读取inputstream
String bodyStr = null; BufferedReader br = request.getReader(); String str; while ((str = br.readLine()) != null) { bodyStr.append(str); }
2.转成Map
content-type=application/json 时 , json转map
Map map = JSON.parseObject(body,Map.class);
content-type=application/json 时,k1=v1&k2=v2... 类型的字符串转map
Arrays.stream(body.split("&")) .filter(kv -> kv.contains("=")) .map(kv -> kv.split("=")) .forEach(array -> { map.put(array[0],array[1]); });
request的inputStream只能读取一次,多次读取需要 重写HttpServletRequestWrapper
可参考: https://my.oschina.net/serge/blog/1094063