public String eventParam(String action) {
// 拼装参数
TreeMap<String, Object> params = new TreeMap<>();
params.put("Action", action);
params.put("Region", "bj");
params.put("Timestamp", System.currentTimeMillis() / 1000);
params.put("Nonce", new Random().nextInt(java.lang.Integer.MAX_VALUE));
params.put("SecretId", secretId);
// 整理参数
String signature = getSignature(params);
String pullGet = SignatureUtil.getStringToSign("GET", "vod.api.qcloud.com/v2/index.php", params);
String substring = pullGet.substring(pullGet.indexOf("?"));
substring += "&Signature=" + signature;
return substring;
}
public static String sign(String s, String key, String method) throws Exception {
Mac mac = Mac.getInstance(method);
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), mac.getAlgorithm());
mac.init(secretKeySpec);
byte[] hash = mac.doFinal(s.getBytes());
return Base64.encodeBase64String(hash);
}
public static String getStringToSign(String method, String endpoint, TreeMap<String, Object> params) {
StringBuilder s2s = new StringBuilder();
s2s.append(method).append(endpoint).append("?");
// 签名时要求对参数进行字典排序,此处用TreeMap保证顺序
for (String k : params.keySet()) {
s2s.append(k).append("=").append(params.get(k).toString()).append("&");
}
return s2s.toString().substring(0, s2s.length() - 1);
}
相似问题