HttpClient實現簽名並呼叫遠端服務
阿新 • • 發佈:2018-11-26
使用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; }