2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 阿里大于短信验证码接口发送用户短信(JAVA后台开发spring-boot+mybatis+thymeleaf)

阿里大于短信验证码接口发送用户短信(JAVA后台开发spring-boot+mybatis+thymeleaf)

时间:2018-09-15 14:29:09

相关推荐

阿里大于短信验证码接口发送用户短信(JAVA后台开发spring-boot+mybatis+thymeleaf)

先登陆阿里大于官网注册一个账号然后开通短信服务

已经开通了所以不需要再开通了

首先是得到(创建一个)AccessKey,在右上角可以创建

然后得到一个AccessKey,查看Access Key Secret需要再填一次密码还是获取一个短信验证我忘了大家申请之后可以自行查看

将获取到的这个AccessKey ID及Access Key Secret保存下来以便下次使用

//AccessKey ID:LTAIH7HUnyYchCIe

//Access Key Secret:XXXXXXXXXXXXXXXXXXXXXXXXXXX

选择刚刚应用开发-模板管理

选择添加模板,然后就是签名(要不要无所谓不过还是写上吧。。。)这个签名需要一个验证,如果用的是公司项目就填公司的,如果是自己个人就写自己的真实姓名即可

完了我们将三个东西记住然后开始写代码:AccessKey ID,Access Key Secret,SMS_139570117(模板code)

首先呢,我们创建一个工具类:

先上项目分支结构:spring-boot

工具类:SendCode

package com.jxjc.utils;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.IAcsClient;import com.aliyuncs.dysmsapi.model.v0525.SendSmsRequest;import com.aliyuncs.dysmsapi.model.v0525.SendSmsResponse;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.http.MethodType;import com.aliyuncs.profile.DefaultProfile;import com.aliyuncs.profile.IClientProfile;public class SendCode {// 随机验证码private int code;public int getCode() {return code;}public void setCode() {code = (int) (Math.random() * 9999) + 1000; // 每次调用生成一次四位数的随机数}//AccessKey ID:LTAIH7HUnyYchCIe//Access Key Secret:XQrkdw7nUQGVFuDcXFh7nNfbU3v93O/** 发送验证码的方法** @param luoyunlong2*/public static SendSmsResponse sendSms(String phoneNumber,String code) throws ClientException {//超时时间修改System.setProperty(".client.defaultConnectTimeout", "5000");//不必修改System.setProperty(".client.defaultReadTimeout", "5000");//不必修改//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAIH7HUnyYchCIe", "XQrkdw7nUQGVFuDcXFh7nNfbU3v93O");//"***"分别填写自己的AccessKey ID和Secret//Dysmsapi短信API产品名称(短信产品名固定,无需修改)//短信API产品域名(接口地址固定,无需修改)DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "");//不必修改IAcsClient acsClient = new DefaultAcsClient(profile);//不必修改//组织请求对象SendSmsRequest request = new SendSmsRequest();//不必修改request.setMethod(MethodType.POST);//*此处填写接收方的手机号码request.setPhoneNumbers(phoneNumber);//此处填写已申请的短信签名request.setSignName("车管家");//此处填写获得的短信模版CODErequest.setTemplateCode("SMS_139570117");//笔者的短信模版中有${code}, 因此此处对应填写验证码SendCode sendcode = new SendCode();sendcode.setCode();code = sendcode.getCode()+"";request.setTemplateParam("{\"code\":\""+code+"\"}");//request.setOutId("1111111");SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);//不必修改if(sendSmsResponse.getCode()!=null) {System.out.println("发送短信验证码成功,验证码为:"+code);}else {System.out.println("发送短信验证码失败");}return sendSmsResponse;}}

在controller里面调用

在userController里面新建一个用于调用工具类的方法:sendcode

/** 发送手机验证码短信*/@RequestMapping(value = "/sendcode",method = RequestMethod.POST)@ResponseBodypublic void sendcode(HttpServletRequest request, HttpServletResponse response)throws ClientException, ServletException, IOException {response.setContentType("application/json;charset=UTF-8");SendCode sendcode = new SendCode();User user = new User();String tel = request.getParameter("telphone");String yzm = request.getParameter("yanzhengma");sendcode.sendSms(tel, yzm);int code = sendcode.getCode();user.setTelphone(tel);String yanzhengma = sendcode.sendSms(request.getParameter("telphone"),request.getParameter("yanzhengma")) .getCode(); if(yanzhengma.equals(request.getParameter("yanzhengma"))) { // 短信验证码验证成功System.out.println("短信发送成功");}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。