Java調用阿里雲短信通道服務

function getNum(){ $.ajax({ type: "POST", url: "ajaxNum", data: "phoneNum="+document.getElementById("login-mobile").value, success: function(msg){ document.getElementById("login-verify-code").value=msg; } }); }

第五步:調用阿里通信接口

核心代碼:

package com.qf.action;

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.http.MethodType;

import com.aliyuncs.profile.DefaultProfile;

import com.aliyuncs.profile.IClientProfile;

import com.qf.utils.AliAccessKey;

import com.qf.utils.RandomStringTLUtils;

import

org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

/**

* Thanks for Everything.

*/

@Controller

public class SmsAction {

//顯示頁面

@RequestMapping("/mt")

private String ui(){

return "mtlogin";//返回頁面

}

@RequestMapping("/ajaxNum")

@ResponseBody

public String sendMsg(String phoneNum) throws ClientException {//拿到手機號

//調用阿里通信接口

//設置超時時間-可自行調整

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 = AliAccessKey.accessKeyId;//你的accessKeyId,參考本文檔步驟2

final String accessKeySecret = AliAccessKey.accessKeySecret;//你的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);

//必填:待發送手機號。支持以逗號分隔的形式進行批量調用,批量上限為1000個手機號碼,批量調用相對於單條調用及時性稍有延遲,驗證碼類型的短信推薦使用單條調用的方式

request.setPhoneNumbers(phoneNum);

//必填:短信簽名-可在短信控制檯中找到

request.setSignName("短信簽名名稱

");

//必填:短信模板-可在短信控制檯中找到

request.setTemplateCode("短信模板");

//可選:模板中的變量替換JSON串,如模板內容為"親愛的${name},您的驗證碼為${code}"時,此處的值為

//友情提示:如果JSON中需要帶換行符,請參照標準的JSON協議對換行符的要求,比如短信內容中包含\r\n的情況在JSON中需要表示成\\r\\n,否則會導致JSON在服務端解析失敗

//生成幾位的驗證碼

String numeric = RandomStringTLUtils.randomNumeric(6);

request.setTemplateParam("{"code":""+numeric+""}");

//可選-上行短信擴展碼(擴展碼字段控制在7位或以下,無特殊需求用戶請忽略此字段)

//request.setSmsUpExtendCode("90997");

//可選:outId為提供給業務方擴展字段,最終在短信回執消息中將此值帶回給調用者

request.setOutId(

"qf");

//請求失敗這裡會拋ClientException異常

SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);

if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {

//請求成功

//真實應用的時候驗證碼在服務端有記錄

//客戶端由客戶來輸入

//客戶輸入的驗證碼和服務端做匹配

return numeric;

}

return "error";

}

}

第六步:測試

Java調用阿里雲短信通道服務

注意:需要收費。


分享到:


相關文章: