调用阿里云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;    }}
原创粉丝点击