這個,,廢話不多說了,直接開始哈
步驟如下:
1、登陸阿里大于(沒有賬號需要注冊一個),設置短信服務的簽名和模板。
2、實現該接口要做的準備AK(AccessKey)
3、導入相應的jar包
4、代碼
接下來,我們就開始啦~
一、首先去登錄阿里大于:
1)沒有號的就注冊一個!用淘寶、支付寶、微博賬號等就可以登錄了,在登錄成功之后顯示下圖界面。?
2)點擊頁面的控制臺,然后會跳到另一個頁面,點擊“使用短信服務”? 如下兩圖:
3)點擊“國內消息”,在簽名管理中,點擊“添加簽名”
我是企業賬號,簽名設置如下,簽名之后會用到的。
4)接下來,一樣的點擊短信模板,接著點擊添加短信模板,然后添加自己想要的編寫的信息就行。code之后會用到,如下圖?
這兩步都需要等到審核,點擊詳情可以看到設置的內容
在這兩個都設置好之后,就可以進行第二步的操作了。?
二、設置實現接口的AccessKey
首先需要用到阿里云平臺的阿里大于官網。(里面有詳細的API介紹。)
https://help.aliyun.com/document_detail/55284.html?spm=a2c4g.11186623.6.567.77f914d1QWnwjX
1)點擊“密鑰管理頁面”
2)新建一對密鑰用于發送短信,如下圖?
3)如圖,就是我剛新建好的密鑰
三、配置sdk環境,導入相應的jar包
1)需要用到2個jar包,一個aliyun-java-sdk-core包,另外一個是alicom-dysms-api包。(jar可以去官網下載,代碼官網上面也有)
https://help.aliyun.com/document_detail/55359.html?spm=a2c4g.11186623.6.595.5cf45777W7Jt5D
下載后,解壓:
2)也可以使用maven:
SDK是否能在maven上獲取?
可以從maven中獲取,在pom文件中添加相關依賴即可。
<dependency>
? <groupId>com.aliyun</groupId>
? <artifactId>aliyun-java-sdk-core</artifactId>
? <version>4.0.6</version> 注:如提示報錯,先升級基礎包版,無法解決可聯系技術支持
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
四、創建類,修改對應的參數。
1)一切準備工作做好之后,現在開始寫代碼了。其實只是需要修改一些參數,代碼部分基本上demo中都寫好了,然后與自己的項目結合就好了。demo在剛剛下載的文件夾中,如圖所示的位置:
2)首先結構目錄如圖:
3)標注的這些地方是你需要修改的。
4)如圖,就是返回的數據
發送驗證碼,其中的code是傳遞的參數,隨機數生成一個6位數賦值給code然后發送到手機上。
當然直接返回,發送成功或失敗也行:
代碼如下:
**
package com.lym.util;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
import java.util.Random;
public class Message {
//驗證碼過期時間(分鐘)
? ? private final static Integertime =10;
? ? //產品名稱:云通信短信API產品,開發者無需替換
? ? static final Stringproduct ="Dysmsapi";
? ? //產品域名,開發者無需替換
? ? static final Stringdomain ="dysmsapi.aliyuncs.com";
? ? // 配置accessKeyId和accessKeySecret
? ? static final String accessKeyId ="這里寫你的accessKeyId";
? ? static final String accessKeySecret ="這里寫你的accessKeySecret?";
? ? public static boolean sendMessage(String phone)throws ClientException {
//可自助調整超時時間
? ? ? ? System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
? ? ? ? System.setProperty("sun.net.client.defaultReadTimeout", "10000");
? ? ? ? //初始化acsClient,暫不支持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();
? ? ? ? //必填:待發送手機號
? ? ? ? request.setPhoneNumbers(phone);
? ? ? ? //必填:短信簽名-可在短信控制臺中找到
? ? ? ? request.setSignName("xxx");
? ? ? ? //必填:短信模板-可在短信控制臺中找到
? ? ? ? request.setTemplateCode("SMS_10000000");
? ? ? ? //隨機驗證碼
? ? ? ? String code ="";
? ? ? ? Random radom =new Random(new Date().getTime());
? ? ? ? for (int i =0; i <6; i++) {
//[0,10)
? ? ? ? ? ? code = code + radom.nextInt(10);
? ? ? ? }
????????//可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為
? ? ? ? request.setTemplateParam("{\"code\":\""+code+"\", \"time\":\""+time+"\"}");
? ? ? ? //選填-上行短信擴展碼(無特殊需求用戶請忽略此字段)
????????//request.setSmsUpExtendCode("999997");
? ? ? ? //可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者
? ? ? ? //request.setOutId("SMS_100000");
? ? ? ? //hint 此處可能會拋出異常,注意catch
? ? ? ? SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
? ? ? ? if(sendSmsResponse.getCode() !=null && sendSmsResponse.getCode().equals("ok") ){
//請求成功
? ? ? ? ? ? System.out.println(sendSmsResponse.getCode());
? ? ? ? ? ? System.out.println("請求成功");
return true;
? ? ? ? }
return false;
? ? }
}
**