创建阿里云账号为了访问短信服务,您需要有一个阿里云账号。如果没有,可先按照如下步骤创建阿里云账号。

步骤 1

访问阿里云官方网站,单击页面上的免费注册。按照屏幕提示完成注册流程并进行实名认证,短信服务只支持实名认证用户使用。为了更好地使用阿里云服务,建议尽快完成实名认证,否则部分阿里云服务将无法使用。

步骤 2

获取阿里云访问密钥。为了使用短信发送API-Java SDK,您必须申请阿里云的访问密钥。

阿里云访问密钥是阿里云为用户使用API(非控制台)来访问其云资源设计的“安全口令”。您可以用它来签名API请求内容以通过服务端的安全验证。

该访问密钥成对(AccessKey ID与AccessKey Secret)生成和使用。每个阿里云用户可以创建多对访问密钥,且可随时启用(Active)、禁用(Inactive)或者删除已经生成的访问密钥对。

您可以通过阿里云控制台的密钥管理页面,创建和管理所有的访问密钥对,且保证它处于“启用”状态。由于访问密钥是阿里云对API请求进行安全验证的关键因子,请妥善保管你的访问密钥。如果某些密钥对出现泄漏风险,建议及时删除该密钥对并生成新的替代密钥对。

步骤 3

在控制台完成加速产品的开通获取必备的API调用参数。

参数列表

入参列表

参数名称 参数类型 必填与否 样例取值 参数说明
IpAddress String 必须 192.168.1.2 加速IP地址
port Integer 必须 80 加速端口

出参列表

参数名称 参数类型 样例取值 参数说明
RequestId String 89078768788ada 请求ID
Code String OK 状态码-返回OK代表请求成功,其他错误码详见错误码列表
Message String 请求成功 状态码的描述
ResultModule Object 返回结果 具体校验结果,详见ResultModule样例

ResultModule 样例

参数名称 参数类型 样例取值 参数说明
BandId Long 1000001L 当前宽带ID
UploadBandwidth Integer 10M 当前上行带宽,单位Mbps
DownloadBandwidth Integer 10M 当前下行带宽,单位Mbps
BandOfferList List -- 可订购的加速产品列表,详见BandOffer样例

BandOffer 样例

参数名称 参数类型 样例取值 参数说明
OfferId Long 220980804008L 加速产品ID
Bandwidth Integer 100M 目标加速带宽,单位Mbps
Duration Long 30 加速时长,单位小时,包月返回9999
Direction String UP/DOWN 加速方向,UP上行加速,DOWN下行加速

技术对接步骤

1. 下载SDK工具包

SDK工具包中一共包含了2个类库,一个aliyun-java-sdk-core包,另外一个是snsu-open-api包,将这两个包执行mvn package命令或者mvn deploy命令打包出相应的jar包,添加到工程类库中依赖使用。

2. 编写样例程序

/** * 产品名称:云通信加速API产品,开发者无需替换 / static final String product = "Snsuapi"; /* * 产品域名,开发者无需替换 */ static final String domain = "snsuapi.aliyuncs.com";

// TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
static final String accessKeyId = "yourAccessKeyId";
static final String accessKeySecret = "yourAccessKeySecret";



public static BandPrecheckResponse bandPreCheck() {

    BandPrecheckResponse response = new BandPrecheckResponse();
    /**
     * 可自助调整超时时间
     */
    System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
    System.setProperty("sun.net.client.defaultReadTimeout", "10000");

    try {
        /**
         * 初始化acsClient,暂不支持region化
         */
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);

        /**
         * 组装请求对象-具体描述见控制台-文档部分内容
         */
        BandPrecheckRequest request = new BandPrecheckRequest();
        String ipAddress = "127.0.0.1";
        Integer port = 80;
        request.setIpAddress(ipAddress);
        request.setPort(port);
        /**
         * 禁止Client的自动重试,如果失败,最好选择手动重试
         */
        response = acsClient.getAcsResponse(request,false,0);

        /**
         * 具体的错误码可以参考具体的文档
         */
        BandPrecheckResponse.ResultModule resultModule =response.getResultModule();
        /**
         * 入参的BandId
         */
        resultModule.getBandId();
        /**
         * 当前宽带的下行速率,单位是 Mbps
         */
        Integer downLoadBandWidth = resultModule.getDownloadBandwidth();

        /**
         * 当前宽带的上行速率,单位是 Mbps
         */
        Integer upLoadBandWidth = resultModule.getDownloadBandwidth();

        /**
         * 当前带宽可购买的加速产品Offer
         * 如果当前返回值为null 或者 空列表,表示当前没有合适的加速服务
         */
        List<BandPrecheckResponse.ResultModule.BandOfferListItem> bandOfferListItemList = resultModule.getBandOfferList();
        for (BandPrecheckResponse.ResultModule.BandOfferListItem item : bandOfferListItemList) {
            System.out.println(item.getOfferId());   // Long 类型
            System.out.println(item.getBandwidth()); // 单位 Mbps
            System.out.println(item.getDirection()); // up, down 两个值,UP:上行; DOWN:下行
            System.out.println(item.getDuration());  // 可用时长 BandOfferListItem.Duration >= 9999 表示包月
        }
        return response;
    } catch (ClientException e) {
        /**
         * 需要捕获Client异常
         */
        e.printStackTrace();

        /**
         * todo 进行一些特定业务处理,重试或者抛出异常
         */
    }
    return response;
}