使用treeMap传参,实现字典序排列计算签名并调用请求
// 转发获取角色等级请求
Map<String, String> params = new TreeMap<String, String>();
params.put("zoneId", zoneId);
params.put("roleId", roleId);
params.put("appId", Constant.appId);
String timestamp = System.currentTimeMillis() + "";
params.put("timestamp", timestamp);
// 接收响应
String response = HttpClientUtils.signAndGet(Constant.level, params);
Map<String, Object> responseMap = JSON.parseObject(response);
// 状态码不为1000抛出异常
if ((int) responseMap.get("code") != 1000) {
throw new RRException((String) responseMap.get("msg"));
}
Map<String, Object> dataMap = (Map<String, Object>) responseMap.get("data");
String levelString = (String) dataMap.get("level");
return Integer.parseInt(levelString);
public static String signAndGet(String url, Map<String, String> params){
String sign = SignUtils.sign(params);
params.put("sign", sign);
return doGet(url, params);
}
public static String sign(Map<String, String> params) {
StringBuffer sb = new StringBuffer();
Iterator<Entry<String, String>> iter = params.entrySet().iterator();
while (iter.hasNext()) {
Entry<String, String> entry = (Entry<String, String>) iter.next();
sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
}
sb.append("key=" + Constant.key);
String sign = sb.toString();
sign = MD5Utils.string2MD5(sign).toUpperCase();
return sign;
}