阿里云短信服务 SDK for Java 是阿里云提供的官方Java SDK,用于调用阿里云短信服务API。该SDK支持发送短信、管理短信签名和模板、查询发送记录、管理资质认证等功能,帮助开发者快速集成短信服务到自己的应用中。
安装
系统要求
Java版本:请检查您的Java版本是否高于Java 8。Java环境配置的方法,请参见在Windows搭建Java开发环境。
操作系统:Windows/Linux/macOS(无特殊要求)。
其他依赖:Maven 3.0+(用于构建项目)。
使用 Maven 安装
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<!-- 请将 'the-latest-version' 替换为最新版本号:https://mvnrepository.com/artifact/com.aliyun/dysmsapi20170525 -->
<version>the-latest-version</version>
</dependency>认证配置
步骤一:创建RAM用户并完成授权
阿里云主账号拥有较高权限,建议您通过RAM用户进行API调用和日常运维。有关RAM用户的更多信息,请参见RAM用户概览。
步骤二:获取访问凭证
请配置环境变量,通过环境变量读取访问密钥(AccessKey)。环境变量配置方法,请参见在Linux、macOS和Windows系统配置环境变量。
为避免在代码中硬编码AccessKey而造成泄露,请通过配置环境变量的方式,来获取AccessKey。
本文代码示例以环境变量名
ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET为例,进行后续操作。
步骤三:配置环境变量
使用环境变量是最安全的配置方式,避免将敏感信息硬编码在代码中。
设置环境变量:
export ALIBABA_CLOUD_ACCESS_KEY_ID='your_access_key_id'
export ALIBABA_CLOUD_ACCESS_KEY_SECRET='your_access_key_secret'在代码中使用:
import com.aliyun.tearpc.models.Config;
import com.aliyun.dysmsapi20170525.Client;
// 使用默认凭证链,自动从环境变量读取
Config config = new Config();
config.credential = new com.aliyun.credentials.Client(null);
config.endpoint = "https://dysmsapi.aliyuncs.com";
config.regionId = "cn-hangzhou";
Client client = new Client(config);安全最佳实践
使用环境变量或密钥管理服务存储凭证。
定期轮换访问密钥。
遵循最小权限原则,为RAM用户分配最小必要权限。
不要在日志中打印凭证信息。
在生产环境中使用RAM角色而非主账号凭证。
快速开始
代码示例
使用SDK调用发送短信API的代码示例如下,请根据注释完成参数填写。
package com.aliyun.sample;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20170525.Client;
import com.aliyun.dysmsapi20170525.models.SendSmsRequest;
import com.aliyun.dysmsapi20170525.models.SendSmsResponse;
import static com.aliyun.teautil.Common.toJSONString;
public class Sample {
public static Client createClient() throws Exception {
Config config = new Config()
// 配置 AccessKey ID,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"))
// 配置 AccessKey Secret,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
// 配置 Endpoint
config.endpoint = "dysmsapi.aliyuncs.com";
return new Client(config);
}
public static void main(String[] args) throws Exception {
// 初始化请求客户端
Client client = Sample.createClient();
// 构造请求对象,请填入请求参数值
SendSmsRequest sendSmsRequest = new SendSmsRequest()
.setPhoneNumbers("1390000****")
.setSignName("阿里云")
.setTemplateCode("SMS_15305****")
.setTemplateParam("{\"name\":\"张三\",\"number\":\"1390000****\"}");
// 获取响应对象
SendSmsResponse sendSmsResponse = client.sendSms(sendSmsRequest);
// 响应包含服务端响应的 body 和 headers
System.out.println(toJSONString(sendSmsResponse));
}
}下载示例代码
也可以下载示例代码,直接运行。
访问SendSms。
在左侧的参数配置页签,填写需要的参数信息,填写示例如下:
PhoneNumbers 参数输入示例值: 139****0000。
SignName 参数输入示例值:阿里云短信测试。
TemplateCode 参数输入示例值:SMS_15495****。
TemplateParams 参数输入示例值:
{"code":"1234"}。
在右侧的SDK示例页签,SDK版本选择v2.0,语言选择Java语言(按需选择Java和Java异步),单击下载完整工程按钮,下载示例代码包。
解压后使用IDE加载项目,待相关依赖加载完毕后,打开
src/main/java/com/aliyun/sample/Sample.java。
运行项目
项目运行后可查看到输出,本示例中的返回内容如下:
{
"headers": {
"access-control-allow-origin": "*",
"date": "Mon, 17 Jul 2023 16:21:50 GMT",
"content-length": "110",
"keep-alive": "timeout=25",
"x-acs-request-id": "F59B3F78-D9CD-5D01-A9CC-AE5C921ED9C0",
"connection": "keep-alive",
"content-type": "application/json;charset=utf-8",
"etag": "1MzEw7RSXKXTkIJ1thYGmCw0",
"access-control-expose-headers": "*",
"x-acs-trace-id": "5ecfe30b412fb6e09a86d651ccbe13db"
},
"statusCode": 200,
"body": {
"bizId": "695425589610909881^0",
"code": "OK",
"message": "OK",
"requestId": "F59B3F78-D9CD-5D01-A9CC-AE5C921ED9C0"
}
}最佳实践总结
性能优化
使用连接池复用HTTP连接,减少连接建立开销。
对于高频调用,考虑使用异步调用模式。
合理设置超时时间,避免长时间等待影响业务性能。
批量操作时,充分利用API的批量处理能力。
安全建议
始终使用HTTPS协议与API通信。
敏感信息(如手机号、验证码)不要记录在日志中。
对用户输入的手机号进行格式验证,防止恶意输入。
使用阿里云提供的STS临时凭证替代长期凭证。
资源管理
及时关闭不再使用的客户端连接。
对于大量并发请求,合理配置线程池大小。
监控API调用频率,避免超出QPS限制。