调用阿里云api获取解析记录列表
来源:互联网 发布:3个人合唱的歌曲 知乎 编辑:程序博客网 时间:2024/04/28 07:58
接口文档:获取解析记录列表-https://help.aliyun.com/document_detail/29776.html?spm=5176.doc29699.6.614.vXIo2V
直接post代码:
package JunitTest;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Date;import java.util.HashMap;import java.util.Map;import java.util.SimpleTimeZone;import java.util.UUID;import javax.crypto.Mac;import javax.crypto.spec.SecretKeySpec;import org.apache.commons.codec.binary.Base64;import org.junit.Test;public class getDescribeDomainRecords { @Test public void test() throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException{ try{ URL url = new URL("http://alidns.aliyuncs.com/?"+getDescribeDomainRecords("starkfang.cn")); HttpURLConnection urlcon = (HttpURLConnection)url.openConnection(); urlcon.connect(); //获取连接 InputStream is = urlcon.getInputStream(); BufferedReader buffer = new BufferedReader(new InputStreamReader(is)); StringBuffer bs = new StringBuffer(); String l = null; while((l=buffer.readLine())!=null){ bs.append(l).append("\n"); } System.out.println(bs.toString()); }catch(IOException e){ } } /** * * @param dns 域名 * @return * @throws UnsupportedEncodingException * @throws InvalidKeyException * @throws NoSuchAlgorithmException */ public static String getDescribeDomainRecords(String dns) throws UnsupportedEncodingException, InvalidKeyException, NoSuchAlgorithmException{ final String HTTP_METHOD = "GET"; Map<String, String> parameters = new HashMap<String, String>(); // 加入请求参数 parameters.put("Action", "DescribeDomainRecords"); parameters.put("DomainName", dns); parameters.put("Version", "2015-01-09"); parameters.put("AccessKeyId", "testId");//输入你的 Access Key ID parameters.put("Timestamp", formatIso8601Date(new Date())); parameters.put("SignatureMethod", "HMAC-SHA1"); parameters.put("SignatureVersion", "1.0"); parameters.put("SignatureNonce", UUID.randomUUID().toString()); parameters.put("Format", "XML"); // 对参数进行排序,注意严格区分大小写 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))); String signature = getSignature(stringToSign.toString()); canonicalizedQueryString.append("&") .append("Signature").append("=") .append(percentEncode(signature)); return canonicalizedQueryString.toString(); } private static final String ISO8601_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss'Z'"; private static String formatIso8601Date(Date date) { SimpleDateFormat df = new SimpleDateFormat(ISO8601_DATE_FORMAT); df.setTimeZone(new SimpleTimeZone(0, "GMT")); return df.format(date); } private static final String ENCODING = "UTF-8"; private static String percentEncode(String value) throws UnsupportedEncodingException{ return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20") .replace("*", "%2A").replace("%7E", "~") : null; } // 以下是一段计算签名的示例代码 private static String getSignature(String stringToSign) throws InvalidKeyException, UnsupportedEncodingException, NoSuchAlgorithmException { final String ALGORITHM = "HmacSHA1"; final String ENCODING = "UTF-8"; String key = "bLJ15dkZHfnMEmaKUYRXh7KCjr4vYe&";//注意 key = Access Key Secret +"&" Mac mac = Mac.getInstance(ALGORITHM); mac.init(new SecretKeySpec( key.getBytes(ENCODING), ALGORITHM)); byte[] signData = mac.doFinal( stringToSign.getBytes(ENCODING)); String signature = new String(Base64.encodeBase64(signData)); return signature; }}
阅读全文
0 0
- 调用阿里云api获取解析记录列表
- 阿里云CDN API调用
- 调用百度API获取歌曲列表
- 调用百度API获取歌曲列表
- 通过调用文摘列表API获取文摘
- 通过调用笑话列表API获取笑话列表
- 阿里云短信发送API接口调用
- 通过阿里云API动态修改域名解析记录
- 阿里云api调用做简单的cmdb
- 直接调用阿里云视频点播API实现视频播放
- 阿里云短信服务API服务调用SendSMSUtil
- 利用阿里云的API实现动态域名解析
- 关于阿里云Rds接口调用的记录
- 获取阿里云域名记录中的RecordID方法
- python调用阿里云接口获取SLB资产信息
- 阿里云天气api调用方法。
- android 获取通讯录记录列表
- android 获取通讯录记录列表
- VL09增强-冲销校验
- caffe随记(二) --- 数据结构简介
- kafka java客户端调用问题
- 侧拉
- Android studio导出的apk在真机上安装提示“文件不存在或已失效”的解决方法
- 调用阿里云api获取解析记录列表
- Android activity在屏幕显示方向设置
- 导航条加按钮分页
- Mybatis流程学习总结(待续)
- 对称加密、非对称加密、数字签名
- 1026. 程序运行时间(15)
- Mapper中insert方法与insertSelective的区别
- 移动端UI自动化测试框架对比
- 阿里云ECS