package com.videogo.ui.util; import android.text.TextUtils; import com.videogo.util.MD5Util; import org.json.JSONArray; import org.json.JSONObject; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public class SignUtil { public static String getGetSmsCodeSign(String phone) { Map map = new HashMap(); { map.put("type", 1); map.put("userId", "654321"); map.put("phone", phone); } Map resultMap = paramsInit("c279ded87d3f4fdca7658f95fb5f1d9e", "b097e53bb9627e7e32b7a8001c701151", "description/get", map); JSONObject signJson; try { signJson = setJosn(resultMap); return signJson.toString(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }; return null; } public static String getGetAccessTokenSign(String phone) { Map map = new HashMap(); { map.put("userId", "654321"); map.put("phone", phone); } Map resultMap = paramsInit("c279ded87d3f4fdca7658f95fb5f1d9e", "b097e53bb9627e7e32b7a8001c701151", "token/accessToken/get", map); JSONObject signJson; try { signJson = setJosn(resultMap); return signJson.toString(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); }; return null; } public static Map paramsInit(String appKey, String appSecret, String method, Map paramsMap) { Map map = new HashMap(); long time = System.currentTimeMillis() / 1000; StringBuilder paramString = new StringBuilder(); if (paramsMap != null && !paramsMap.isEmpty()) { List paramList = new ArrayList(); for (Iterator it = paramsMap.keySet().iterator(); it.hasNext();) { String key1 = it.next(); String param = key1 + ":" + paramsMap.get(key1); paramList.add(param); } String[] params = paramList.toArray(new String[paramList.size()]); Arrays.sort(params); for (String param : params) { paramString.append(param).append(","); } } paramString.append("method").append(":").append(method).append(","); paramString.append("time").append(":").append(time).append(","); paramString.append("secret").append(":").append(appSecret); String sign = MD5Util.getMD5String(paramString.toString().trim()); Map systemMap = new HashMap(); systemMap.put("ver", "1.0"); systemMap.put("sign", sign); systemMap.put("name", appKey); systemMap.put("time", time); map.put("system", systemMap); map.put("method", method); map.put("params", paramsMap); map.put("id", "123456"); return map; } public static JSONObject setJosn(Map map) throws Exception { JSONObject json = null; StringBuffer temp = new StringBuffer(); if (!map.isEmpty()) { temp.append("{"); // 遍历map Set set = map.entrySet(); Iterator i = set.iterator(); while (i.hasNext()) { Map.Entry entry = (Map.Entry) i.next(); String key = (String) entry.getKey(); Object value = entry.getValue(); temp.append("\"" + key + "\":"); if (value instanceof Map) { temp.append(setJosn((Map) value) + ","); } else if (value instanceof List) { temp.append(setList((List>) value) + ","); } else { temp.append("\"" + value + "\"" + ","); } } if (temp.length() > 1) { temp = new StringBuffer(temp.substring(0, temp.length() - 1)); } temp.append("}"); json = new JSONObject(temp.toString()); } return json; } public static String setList(List> list) throws Exception { String jsonL = ""; StringBuffer temp = new StringBuffer(); temp.append("["); for (int i = 0; i < list.size(); i++) { Map m = list.get(i); if (i == list.size() - 1) { temp.append(setJosn(m)); } else { temp.append(setJosn(m) + ","); } } if (temp.length() > 1) { temp = new StringBuffer(temp.substring(0, temp.length())); } temp.append("]"); jsonL = temp.toString(); return jsonL; } public static Map getJosn(String jsonStr) throws Exception { Map map = new HashMap(); if (!TextUtils.isEmpty(jsonStr)) { JSONObject json = new JSONObject(jsonStr); Iterator i = json.keys(); while (i.hasNext()) { String key = (String) i.next(); String value = json.getString(key); if (value.indexOf("{") == 0) { map.put(key.trim(), getJosn(value)); } else if (value.indexOf("[") == 0) { map.put(key.trim(), getList(value)); } else { map.put(key.trim(), value.trim()); } } } return map; } public static List> getList(String jsonStr) throws Exception { List> list = new ArrayList>(); JSONArray ja = new JSONArray(jsonStr); for (int j = 0; j < ja.length(); j++) { String jm = ja.get(j) + ""; if (jm.indexOf("{") == 0) { Map m = getJosn(jm); list.add(m); } } return list; } }