public static HashMap<String, Object> getAllParam() throws IOException {
HashMap<String, Object> map = new HashMap<>(2);
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) attributes;
HttpServletRequest request = servletRequestAttributes.getRequest();
/**
* 1.从表单上获取参数
* 2.从URL上获取参数:
*/
Map<String, String[]> parameterMap = request.getParameterMap();
parameterMap.forEach((k, v) -> {
if (v.length == 1) {
map.put(k, v[0]);
} else if (v.length > 1) {
map.put(k, Arrays.asList(v));
} else {
map.put(k, v);
}
});
/**
* 3.从body上获取参数
*/
BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
//读取输入流的内容转换为String类型IOUtils必须引入org.apache.dubbo.common.utils.IOUtils;包
String body = RequestBodyUtils.read(reader);
if (!"".equals(body.replaceAll(" ", ""))) {
if (body.startsWith("{") && body.endsWith("}")) {
//JSON形式
JSONObject jsonObject = JSON.parseObject(body);
map.putAll(jsonObject);
} else if (body.startsWith("[") && body.endsWith("]")) {
//JSON数组的形式
JSONArray objects = JSON.parseArray(body);
map.put("body",objects);
} else {
//键值对形式
String[] vks = body.split("&");
for (String vk : vks) {
String[] split = vk.split("=");
if (split.length == 2) {
map.put(split[0], split[1]);
}
}
}
}
//从请求头上:获取参数
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String k = headerNames.nextElement();
String v = request.getHeader(k);
map.put(k, v);
}
return map;
}
Java获取所有形式的请求参数
最新推荐文章于 2024-03-02 10:10:04 发布