全部产品
Search
文档中心

短信服务:Java SDK调用示例

更新时间:Dec 10, 2024

本文介绍如何使用SDK调用OpenAPI接口,向指定手机号发送一条短信。

步骤一:查看OpenAPI文档

在调用OpenAPI前,建议您先阅读对应的接口文档SendMessageToGlobe,了解、学习调用该接口所需要的参数及权限等,更多信息请参见API概览

步骤二:创建RAM用户并完成授权

重要

阿里云主账号拥有较高权限,建议您通过RAM用户进行API调用和日常运维。有关RAM用户的更多信息,请参见RAM用户概览

创建RAM用户

访问创建RAM用户,完成相关名称设置,并选择访问方式使用永久 AccessKey 访问,单击确定后即可完成RAM用户的创建。请及时保存AccessKey信息。

为RAM用户授权

访问RAM用户列表,找到您所创建的RAM用户,单击操作列的添加权限。在权限策略文本搜索框中输入AliyunDysmsFullAccess后选中此策略,单击确认新增授权,即可完成授权操作。

说明
  • AliyunDysmsFullAccess管理短信服务的权限。

  • AliyunDysmsReadOnlyAccess:只读访问短信服务的权限。

如果您需要新建自定义权限,请参见授权信息

步骤三:调用OpenAPI

SDK是最易于集成,且支持度最好的OpenAPI调用方式。本文以Java语言SDK调用OpenAPI,其他语言SDK的用法类似,更多信息请参见短信服务SDK

使用前配置

  • 请检查您的Java版本是否高于Java 8。Java环境配置的方法,请参见在Windows搭建Java开发环境

  • 请通过配置Maven依赖,完成SDK的安装。

    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>dysmsapi20180501</artifactId>
        <version>1.0.10</version>
    </dependency>
  • 请配置环境变量,通过环境变量读取访问密钥(AccessKey)。环境变量配置方法,请参见在Linux、macOS和Windows系统配置环境变量

    说明

    为避免在代码中硬编码AccessKey而造成泄露,请通过配置环境变量的方式,来获取AccessKey。

    本文以环境变量名ALIBABA_CLOUD_ACCESS_KEY_IDALIBABA_CLOUD_ACCESS_KEY_SECRET为例,进行后续操作。

代码示例

使用SDK调用发送短信API的代码示例如下,请根据注释完成参数填写。

package com.aliyun.sample;

import com.aliyun.teaopenapi.models.Config;
import com.aliyun.dysmsapi20180501.Client;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeRequest;
import com.aliyun.dysmsapi20180501.models.SendMessageToGlobeResponse;
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();

        // 构造请求对象,请填入请求参数值
        SendMessageToGlobeRequest sendSmsRequest = new SendMessageToGlobeRequest()
                .setTo("<YOUR_VALUE>")
                .setMessage("<YOUR_VALUE>");

        // 获取响应对象
        SendMessageToGlobeResponse sendSmsResponse = client.sendMessageToGlobe(sendSmsRequest);

        // 响应包含服务端响应的 body 和 headers
        System.out.println(toJSONString(sendSmsResponse));
    }
}

您也可以下载示例代码,直接运行。

下载示例代码

  1. 访问SendMessageToGlobe

  2. 在左侧的参数配置页签,填写需要的参数信息,填写示例如下:

    • To 参数输入示例值:88691567****

    • Message 参数输入示例值:这是一条测试短信

  3. 在右侧的SDK示例页签,SDK版本选择v2.0,语言选择Java语言,单击下载完整工程按钮,下载示例代码包。

  4. 解压后使用IDE加载项目,待相关依赖加载完毕后,打开 src/main/java/com/aliyun/sample/Sample.java

运行项目

项目运行后可查看到输出,本示例中的返回内容如下:

{
  "headers": {
    "date": "Tue, 24 Oct 2023 07:47:17 GMT",
    "content-type": "application/json;charset=utf-8",
    "content-length": "263",
    "connection": "keep-alive",
    "keep-alive": "timeout=25",
    "access-control-allow-origin": "*",
    "access-control-expose-headers": "*",
    "x-acs-request-id": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
    "x-acs-trace-id": "29c11fe4c778b74774d5f5602f0e7975",
    "etag": "2a+mcDRTDkXqx9VF7b6U57Q3"
  },
  "statusCode": 200,
  "body": {
    "ResponseCode": "OK",
    "NumberDetail": {
    "Region": "Taiwan",
    "Country": "Taiwan, Province of China",
    "Carrier": "FarEasTone"
  },
    "RequestId": "97B1D7B6-F2F6-3A50-97BC-A90B43EC962F",
    "Segments": "1",
    "ResponseDescription": "OK",
    "To": "88691567****",
    "MessageId": "191921698133637273"
  }
}