用java 做一个get请求查询郁闷解析,
看了api文档,也看了实例,感觉只写了部分,没串起来,老是请求不成功,请帮我看看 ,我感觉是缺少了很多东西。
final String HTTP_METHOD = "GET";
Map<String, String> parameters = new HashMap<String, String>();
// 加入请求参数
parameters.put("Action", "DescribeDomainRecords");
parameters.put("DomainName", "xxxxxxxx.com");
parameters.put("Version", "2015-01-09");
parameters.put("AccessKeyId", "ACESSKEYIDXXXXXXX");
parameters.put("TimeStamp", DateHelper.formatIso8601Date(new Date()));
parameters.put("SignatureMethod", "HMAC-SHA1");
parameters.put("SignatureVersion", "1.0");
parameters.put("SignatureNonce", UUID.randomUUID().toString());
parameters.put("Format", "JSON");
// 对参数进行排序,注意严格区分大小写
String[] sortedKeys = parameters.keySet().toArray(new String[]{});
Arrays.sort(sortedKeys);
final String SEPARATOR = "&";
// 生成stringToSign字符串
StringBuilder stringToSign = new StringBuilder();
stringToSign.append(HTTP_METHOD).append(SEPARATOR);
stringToSign.append(percentEncode("/")).append(SEPARATOR);
StringBuilder canonicalizedQueryString = new StringBuilder();
for (String key : sortedKeys) {
// 这里注意对key和value进行编码
canonicalizedQueryString.append("&")
.append(percentEncode(key)).append("=")
.append(percentEncode(parameters.get(key)));
}
// 这里注意对canonicalizedQueryString进行编码
stringToSign.append(percentEncode(canonicalizedQueryString.toString().substring(1)));
// 计算签名
final String ALGORITHM = "HmacSHA1";
final String ENCODING = "UTF-8";
//Access Key Secret 是“ACCESSKEYSECRETXXXXXXXXXXXXXXXX"
String key = "ACCESSKEYSECRETXXXXXXXXXXXXXXXX&";
Mac mac = Mac.getInstance(ALGORITHM);
mac.init(new SecretKeySpec(key.getBytes(ENCODING), ALGORITHM));
byte[] signData = mac.doFinal(stringToSign.toString().getBytes(ENCODING));
String signature = new String(Base64.encodeBase64(signData));
signature = percentEncode(signature);
canonicalizedQueryString.append("&Signature").append("=").append(signature);
String url = canonicalizedQueryString.toString();
// todo HttpClient 请求.......
返回403
估计是Signature生成不正确
我看了下 生成的Signature 又是根据url去计算的,比较乱,谁帮忙修正下
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。