优化代码 构建docking请求的参数 param pushParams return private MapString String paraseParamListBasePushParam pushParamsMapString String sourceHeader MapString String header
/**
- 构建docking请求的参数
- @param pushParams
- @return
*/
private Map<String, String> paraseParam(List
pushParams,Map<String, String> sourceHeader) { Map<String, String> header = initialBasicHeader(appConfig.getUspPushPath(), appConfig.getUspAccessKey(), appConfig.getUspSecretKey(), sourceHeader); header.put("Content-Type", "application/json"); Map<String, String> dockingParam = new HashMap<>(); dockingParam.put("body", JSONArray.toJSONString(pushParams)); dockingParam.put("header", JSONObject.toJSONString(header)); return dockingParam; }
private static Map<String, String> initialBasicHeader(String pushPath, String accessKey, String secretKey, Map<String, String> header) { header = (header == null) ? new HashMap<>() : header; long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); String signData = pushPath + LF + milliSecond + LF + accessKey; //添加网关需要的header header.put(X_Access_Key, accessKey); header.put(X_Timestamp, String.valueOf(milliSecond)); header.put(X_Signature, buildSignature(signData, secretKey)); return header; }
public static String buildSignature(String data, String secretKey) { String signature = ""; try { SecretKeySpec signKey = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), HmacAlgorithm.HmacSHA256.getValue()); //生成一个指定 Mac 算法的 Mac 对象 Mac mac = Mac.getInstance(HmacAlgorithm.HmacSHA256.getValue()); //用给定密钥初始化 Mac 对象 mac.init(signKey); byte[] rawHmac = mac.doFinal(data.getBytes(StandardCharsets.UTF_8)); signature = Base64.encode(rawHmac); } catch (Exception e) { e.printStackTrace(); } return signature; }
原文地址: https://www.cveoy.top/t/topic/bgkG 著作权归作者所有。请勿转载和采集!