天天看点

Springboot中使用阿里云短信验证码服务

1.引入阿里云的包

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.3.3</version>
</dependency>      

2.编写发送短信的工具类

package com.goodwe.message.Utils;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;


/*
pom.xml
<dependency>
  <groupId>com.aliyun</groupId>
  <artifactId>aliyun-java-sdk-core</artifactId>
  <version>4.0.3</version>
</dependency>
*/
public class MessageUtil {

    /**
     * @Description //验证阿里云开发者身份
     **/
        DefaultProfile profile = DefaultProfile.getProfile("default", "LTAI41s7UdycZniy", "HngXYiuYNWWPfBjCbHNQZuwhqtwDjQ");
        IAcsClient client = new DefaultAcsClient(profile);

        public String SendMessage(String PhoneNumbers){
            CommonRequest request = new CommonRequest();
            //request.setSysProtocol(ProtocolType.HTTPS);
            request.setSysMethod(MethodType.POST);
            request.setSysDomain("dysmsapi.aliyuncs.com");
            request.setSysVersion("2017-05-25");
            request.setSysAction("SendSms");
            request.putQueryParameter("PhoneNumbers", PhoneNumbers);//接受验证码的手机号
            request.putQueryParameter("SignName", "北极光游戏平台");//签名
            request.putQueryParameter("TemplateCode", "SMS_149100495");//模板代码
            request.putQueryParameter("TemplateParam", "{code:"+((int) (Math.random() * 9000 + 1000))+"}");//用户定义的验证码内容
            try {
                CommonResponse response = client.getCommonResponse(request);
                String returnstr = response.getData();
                System.out.println(returnstr);
                JSONObject returnjsonstr = JSONObject.parseObject(returnstr);
                return returnjsonstr.getString("Message");//返回的信息
            } catch (ServerException e) {
                return e.getErrMsg();
            } catch (ClientException e) {
                return e.getErrMsg();
            }
        };

        //查询发送信息
        public   String QuerySendDetails(String PhoneNumber,String SendDate,String PageSize,String CurrentPage){
            CommonRequest request = new CommonRequest();
            //request.setSysProtocol(ProtocolType.HTTPS);
            request.setSysMethod(MethodType.POST);
            request.setSysDomain("dysmsapi.aliyuncs.com");
            request.setSysVersion("2017-05-25");
            request.setSysAction("QuerySendDetails");
            request.putQueryParameter("PhoneNumber", PhoneNumber);
            request.putQueryParameter("SendDate", SendDate);
            request.putQueryParameter("PageSize", PageSize);
            request.putQueryParameter("CurrentPage", CurrentPage);
            try {
                CommonResponse response = client.getCommonResponse(request);
                String returnstr = response.getData();
                System.out.println(returnstr);
                JSONObject returnjsonstr = JSONObject.parseObject(returnstr);
                return returnjsonstr.getString("Message");
            } catch (ServerException e) {
                return e.getErrMsg();
            } catch (ClientException e) {
                return e.getErrMsg();
            }
        }

}      

3.调用工具

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Controller
@RequestMapping("/message")
public class MessageController {

    @RequestMapping("/send")
    public String send() {
        return "/message";
    }

    @RequestMapping(value = "/sendcode",method = RequestMethod.POST)
    public void sendcode(String number, HttpServletResponse response) {
        MessageUtil messageUtil = new MessageUtil();
        try {
            response.getWriter().write(messageUtil.SendMessage(number));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}      

4.前端页面

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<header>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title th:text=" 发送验证码"></title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" target="_blank" rel="external nofollow"  rel="stylesheet">
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
</header>
<body>
<div style="width: 500px;height: auto;margin: auto">
    <div style="text-align: center;margin: 30px"><h3>发送验证码</h3></div>
    <div>
        <div class="form-group">
            <label for="Number">填写手机号码</label>
            <div>
            <input style="float: left;width: 80%" type="text" class="form-control" id="Number" >
            <button style="float: right;width: 20%" type="button" th:οnclick="'javascript:send()'" class="btn btn-default" >Send</button>
            </div>
        </div>
        <div id="returnstr" style="margin: 50px auto;">
        </div>
    </div>
</div>
</div>
<script type="text/javascript">
    send = function () {
        $('#returnstr').html("");
        jQuery.ajax({
            type: "POST",
            url: "sendcode",
            data: {"number":jQuery("#Number").val()},
            success: function (data) {
                console.log(data)
                jQuery("#returnstr").append(" </br><span style='margin:10px auto;border:-1px;background:#00FFFF;border-color:#00f' type='text'  >" + data + "</span>");
            },
            error: function (xhr, status, error) {
                console.log(xhr);
                console.log(status);
                console.log(error);
            }
        });
        jQuery("#Number").val("")
    }

</script>
</body>
</html>      

转载于:https://my.oschina.net/u/4100033/blog/3041742