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

步骤 1

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

步骤 2

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

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

该访问秘钥成对(AccessKeyId 与 AccessKeySecret)生成和使用。每个阿里云用户可以创建多对访问秘钥,且可随时启用(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;
}