mui 一般的默认请求格式是
headers:{‘Content-Type’:‘application/x-www-form-urlencoded’},
安卓原生和IOS的默认请求格式是application/JSON,
所以就导致如果接口要实现几种情况通用必须要解决兼容性的问题(不太懂怎么描述,姑且叫兼容性)
封装一个工具类来解析application/JSON请求
public static JSONObject getJSONParam(HttpServletRequest request){
JSONObject jsonParam = null;
try {
// 获取输入流
BufferedReader streamReader = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
// 写入数据到Stringbuilder
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = streamReader.readLine()) != null) {
sb.append(line);
}
jsonParam = JSONObject.parseObject(sb.toString());
// 直接将json信息打印出来
//System.out.println(jsonParam.toJSONString());
} catch (Exception e) {
e.printStackTrace();
}
return jsonParam;
}
Controller中调用
//如果不确定是哪种请求可以用两种方式接受请求参数,一种application/x-www-form-urlencoded是String直接接收,HttpServletRequest 用来接收application/JSON请求
@CrossOrigin
@PostMapping("getCusterMobile")
public MapgetCusterMobile(HttpServletRequest request,String token,HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");// 跨域
Mapmap = new HashMap<>();
//如果是application/JSON请求,先从request中取出请求参数
JSONObject jsonParam = Tool.getJSONParam(request);
if(jsonParam!=null) {
if(!StringUtils.hasText(token)) {
token = jsonParam.getString("token");
}
}
try {
if(!StringUtils.hasText(token)) {
token = jsonParam.getString("token");
}
} catch (Exception e) {
e.printStackTrace();
map.put("status",6);
map.put("msg", "网络繁忙...");
}
return map;
}