美文网首页
阿里短信服务

阿里短信服务

作者: Hush____ | 来源:发表于2021-04-06 20:56 被阅读0次
package com.ailk.gis.other;

public class Test {

    public static void main(String[] args) throws Exception {
        String accessKeyId = "LTAIT6KFgcw6wSA6";
        String accessSecret = "xRocLb97MSZaNrA8DZFPT0FFWukmhy";
        java.text.SimpleDateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        df.setTimeZone(new java.util.SimpleTimeZone(0, "GMT"));// 这里一定要设置GMT时区
        java.util.Map<String, String> paras = new java.util.HashMap<String, String>();
        // 1. 系统参数
        paras.put("SignatureMethod", "HMAC-SHA1");
        paras.put("SignatureNonce", java.util.UUID.randomUUID().toString());
        paras.put("AccessKeyId", accessKeyId);
        paras.put("SignatureVersion", "1.0");
        paras.put("Timestamp", df.format(new java.util.Date()));
        paras.put("Format", "XML");
        // 2. 业务API参数
        paras.put("Action", "SendSms");
        paras.put("Version", "2017-05-25");
        paras.put("RegionId", "cn-hangzhou");
        paras.put("PhoneNumbers", "18951765323");
        paras.put("SignName", "亚信GIS平台");
        paras.put("TemplateParam", "{\"code\":888888}");
        paras.put("TemplateCode", "SMS_168825932");
        paras.put("OutId", "123");
        // 3. 去除签名关键字Key
        if (paras.containsKey("Signature"))
            paras.remove("Signature");
        // 4. 参数KEY排序
        java.util.TreeMap<String, String> sortParas = new java.util.TreeMap<String, String>();
        sortParas.putAll(paras);
        // 5. 构造待签名的字符串
        java.util.Iterator<String> it = sortParas.keySet().iterator();
        StringBuilder sortQueryStringTmp = new StringBuilder();
        while (it.hasNext()) {
            String key = it.next();
            sortQueryStringTmp.append("&").append(specialUrlEncode(key)).append("=").append(specialUrlEncode(paras.get(key)));
        }
        String sortedQueryString = sortQueryStringTmp.substring(1);// 去除第一个多余的&符号
        StringBuilder stringToSign = new StringBuilder();
        stringToSign.append("GET").append("&");
        stringToSign.append(specialUrlEncode("/")).append("&");
        stringToSign.append(specialUrlEncode(sortedQueryString));
        String sign = sign(accessSecret + "&", stringToSign.toString());
        // 6. 签名最后也要做特殊URL编码
        String signature = specialUrlEncode(sign);
        // 最终打印出合法GET请求的URL
        String msgUrl = "http://192.168.74.188:50009/?Signature=" + signature + sortQueryStringTmp;
        System.out.println(msgUrl);

    }
    public static String specialUrlEncode(String value) throws Exception {
        return java.net.URLEncoder.encode(value, "UTF-8").replace("+", "%20").replace("*", "%2A").replace("%7E", "~");
    }
    public static String sign(String accessSecret, String stringToSign) throws Exception {
        javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1");
        mac.init(new javax.crypto.spec.SecretKeySpec(accessSecret.getBytes("UTF-8"), "HmacSHA1"));
        byte[] signData = mac.doFinal(stringToSign.getBytes("UTF-8"));
        return new sun.misc.BASE64Encoder().encode(signData);
    }

}

相关文章

  • 阿里大于发送短信验证码demo

    使用阿里云的短信服务进行短信发送 1.在阿里的短信服务申请短信签名以及短信模板 短信签名:image.png 短信...

  • 集成阿里云短信服务

    开通阿里云短信服务 登录阿里云进入控制台 产品与服务-->云通讯-->短信服务-->国内消息 创建 签名与短信模...

  • 2018.10.10

    了解阿里云短信服务 短信服务的研究学习

  • 云服务的"坑"

    阿里云 RocketMQ 短信服务 语音服务

  • SpringBoot+Vue+ElementUI实现后台管理系统

    一、SpringBoot 整合阿里云服务 -- 短信服务 1、简介 短信服务(Short Message Serv...

  • 52.短信服务介绍

    SMS-短信服务 短信服务介绍 短信服务(Short Message Service)是阿里云为用户提供的一种通信...

  • 用Laravel Sms实现 laravel短信验证码的发送

    阿里云短信服务使用Laravel Sms这个扩展包实现短信验证码的发送,这里以阿里云的短信服务为例:首先,要创建短...

  • 短信服务之发送短信

    1.创建AK 使用阿里云的短信服务发送短信需要用到阿里云的API,所以我们需要开通短信服务之后,创建AK(Acce...

  • 阿里云点播服务

    阿里云开通短信服务 1、进入控制台,搜索短信服务,进入 2、开通短信服务,进入到短信服务的控制台中 3、进入国内消...

  • 阿里大鱼Golang SDK —— alidayu-go

    前言 现如今短信服务基本已经成为每个产品的标配,短信验证码、通知短信等等。阿里大鱼(也称阿里大于,下统称为阿里大鱼...

网友评论

      本文标题:阿里短信服务

      本文链接:https://www.haomeiwen.com/subject/jduekltx.html