インターフェースのmu、Android、IOSの互換性の問題を解決します。

1934 ワード

mui一般的なデフォルト要求フォーマットはheaders:{{Content-Type}、''aplication/x-wn-form-urlencoded}、Android原生とIOSのデフォルト要求フォーマットはaplication/JSONであるため、インターフェースがいくつかの場合に共通して互換性の問題を解決しなければならないという結果になります。アプリケーション/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 Map getCusterMobile(HttpServletRequest request,String token,HttpServletResponse response) {
		 response.setHeader("Access-Control-Allow-Origin", "*");//   
		 Map map = 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;
	 }