阿里雲簡訊服務 SDK for Java 是阿里雲提供的官方Java SDK,用於調用阿里雲簡訊服務API。協助開發人員快速整合簡訊服務到自己的應用中。
安裝
系統要求
Java版本:請檢查您的Java版本是否高於Java 8。Java環境配置的方法,請參見在Windows搭建Java開發環境。
作業系統:Windows/Linux/macOS(無特殊要求)。
其他依賴:Maven 3.0+(用於構建專案)。
使用 Maven 安裝
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20180501</artifactId>
<!-- 請將 'the-latest-version' 替換為最新版本號碼:https://mvnrepository.com/artifact/com.aliyun/dysmsapi20180501 -->
<version>the-latest-version</version>
</dependency>認證配置
步驟一:建立RAM使用者並完成授權
阿里雲主帳號擁有較高許可權,建議您通過RAM使用者進行API調用和日常營運。有關RAM使用者的更多資訊,請參見RAM使用者概覽。
建立RAM使用者:訪問建立RAM使用者,完成相關名稱設定,並選擇訪問配置為使用永久 AccessKey 訪問,單擊確定後即可完成RAM使用者的建立。請及時儲存AccessKey資訊。
為RAM使用者授權:訪問RAM使用者列表,找到您所建立的RAM使用者,單擊操作列的新增授權。在權限原則文本搜尋方塊中輸入AliyunDysmsFullAccess後選中此策略,單擊確認新增授權,即可完成授權操作。
AliyunDysmsFullAccess:管理簡訊服務的許可權。
AliyunDysmsReadOnlyAccess:唯讀訪問簡訊服務的許可權。
如果您需要建立自訂許可權,請參見授權資訊。
步驟二:擷取訪問憑證
請配置環境變數,通過環境變數讀取存取金鑰(AccessKey)。環境變數配置方法,請參見在Linux、macOS和Windows系統配置環境變數。
為避免在代碼中寫入程式碼AccessKey而造成泄露,請通過配置環境變數的方式,來擷取AccessKey。
本文程式碼範例以環境變數名
ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET為例,進行後續操作。
安全最佳實務
使用環境變數或Key Management Service儲存憑證。
定期輪換存取金鑰。
遵循最小許可權原則,為RAM使用者指派最小必要許可權。
不要在日誌中列印憑證資訊。
在生產環境中使用RAM角色而非主帳號憑證。
快速開始
程式碼範例
使用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.ap-southeast-1.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));
}
}下載範例程式碼
也可以下載範例程式碼,直接運行。
在左側的參數配置頁簽,填寫需要的參數資訊,填寫樣本如下:
To 參數輸入樣本值:88691567****
Message 參數輸入樣本值:這是一條測試簡訊
在右側的SDK樣本頁簽,SDK版本選擇v2.0,語言選擇Java語言(按需選擇Java和Java非同步),單擊下載完整工程按鈕,下載範例程式碼包。
解壓後使用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"
}
}最佳實務總結
效能最佳化
使用串連池複用HTTP串連,減少串連建立開銷。
對於高頻調用,考慮使用非同步呼叫模式。
合理設定逾時時間,避免長時間等待影響業務效能。
大量操作時,充分利用API的批量處理能力。
安全建議
始終使用HTTPS協議與API通訊。
敏感資訊(如手機號、驗證碼)不要記錄在日誌中。
對使用者輸入的手機號進行格式驗證,防止惡意輸入。
使用阿里雲提供的STS臨時憑證替代長期憑證。
資源管理
及時關閉不再使用的用戶端串連。
對於大量並發請求,合理配置線程池大小。
監控API調用頻率,避免超出QPS限制。
相關文檔
GitHub 倉庫:
查看OpenAPI文檔:
在調用OpenAPI前,建議您先閱讀對應的介面文檔SendMessageToGlobe,瞭解、學習調用該介面所需要的參數及許可權等,更多資訊請參見API概覽。
調用OpenAPI:
SDK是最易於整合,且支援度最好的OpenAPI調用方式。本文以Java語言SDK調用OpenAPI,其他語言SDK的用法類似,更多資訊請參見簡訊服務SDK。