阿里雲簡訊服務(JAVA)
一,前言
簡訊驗證碼想必大家都不陌生,在很多網站,APP中都有使用到。比如登入,註冊,身份校驗等場景。不過通常情況下,簡訊服務都是外包給第三方公司的,接下來向大家分享如何使用阿里的簡訊服務。
二,雲通訊
阿里雲官網:https://www.aliyun.com/
忘記說了,沒有賬號的可以直接使用阿里旗下的任何一款賬號進行登入,支付寶,淘寶,釘釘等都可以,或者也可以單獨進行註冊,這裡就不再講述如何註冊了。
登入成功以後,首頁如下,在上方搜尋框中搜索簡訊服務:
1,點選簡訊服務控制檯,如圖:
2,點選快速學習。
顯示對號表示已經學習完成,如果是初次使用,可依此點選上面的5個選項,按照提示完成操作即可。
補充一點,使用阿里簡訊服務在賬戶中是必須要有餘額,也就是先充值再消費。如圖點選充值即可:
3,以上步驟完成以後,在左側目錄點選國內訊息。首先進行簽名管理,然後新增模板管理。
切記,簽名管理通過後產生的AK一定要儲存好,後期呼叫介面會用到。
到這裡為止,前期都是基本的準備工作,可能有些細節問題沒有描述到,但是按照官網的指示也基本差不多。然後再去看官網提供的API介面文件說明。
三,API學習
3.1,基本引數介紹
阿里簡訊API提供多種程式語言的DEMO,可以根據自己的需要進行選擇。
其實阿里簡訊服務的API介紹的非常詳細,從上圖中可以看出,除了可以單獨給使用者傳送簡訊,還支援批量傳送,以及簡訊詳情查詢。首先我們可以先了解如何單獨給使用者傳送驗證碼,請看下圖的基本引數:
以上3個引數是呼叫API必須要填寫的,第一個引數為手機號,第二個引數為簽名。簽名就是之前說過的,申請簽名通過後的簽名名稱。而最後一個是模板程式碼,同樣在上面介紹過模板申請通過後,會產生一個模板CODE。
3.2,引入SDK
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.1.0</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-dysmsapi</artifactId> <version>1.1.0</version> </dependency>
3.3,示例程式碼(官網提供)
//設定超時時間-可自行調整
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化ascClient需要的幾個引數
final String product = "Dysmsapi";//簡訊API產品名稱(簡訊產品名固定,無需修改)
final String domain = "dysmsapi.aliyuncs.com";//簡訊API產品域名(介面地址固定,無需修改)
//替換成你的AK
//final String accessKeyId = "yourAccessKeyId";//你的accessKeyId,參考本文件步驟2
// final String accessKeySecret = "yourAccessKeySecret";//你的accessKeySecret,參考本文件步驟2
//初始化ascClient,暫時不支援多region(請勿修改)
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId,
accessKeySecret);
DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
IAcsClient acsClient = new DefaultAcsClient(profile);
//組裝請求物件
SendSmsRequest request = new SendSmsRequest();
//使用post提交
request.setMethod(MethodType.POST);
//1,必填:待發送手機號。支援以逗號分隔的形式進行批量呼叫,批量上限為1000個手機號碼,批量呼叫相對於單條呼叫及時性稍有延遲,驗證碼型別的簡訊推薦使用單條呼叫的方式;傳送國際/港澳臺訊息時,接收號碼格式為國際區號+號碼,如“85200000000”
request.setPhoneNumbers("");
//2,必填:簡訊簽名-可在簡訊控制檯中找到
request.setSignName("");
//3,必填:簡訊模板-可在簡訊控制檯中找到,傳送國際/港澳臺訊息時,請使用國際/港澳臺簡訊模版
request.setTemplateCode("");
//可選:模板中的變數替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
//友情提示:如果JSON中需要帶換行符,請參照標準的JSON協議對換行符的要求,比如簡訊內容中包含\r\n的情況在JSON中需要表示成\\r\\n,否則會導致JSON在服務端解析失敗
request.setTemplateParam("");
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
// 判斷是否傳送成功
if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
//請求成功
System.out.println("返回的狀態碼:" + sendSmsResponse.getCode());
System.out.println("返回的資訊:" + sendSmsResponse.getMessage());
}
將以上的3個引數填成自己的,啟動工程便可以成功傳送簡訊。
結果如圖所示:
![](https://img2018.cnblogs.com/blog/1655301/201908/1655301-20190815203410419-327235263.jpg)
四,總結
是不是呼叫很簡單,但是在真正的專案中還是要進一步優化,尤其在分散式專案中呼叫。比如將引數抽取到配置檔案,及抽取成工具類等。
最後由於時間倉促只是簡短的記錄,有很多細節沒有為大家分享到,所以如果遇到什麼問題可以在下方留言,看到後會第一時間回覆。感謝閱讀