Java使用阿里云短信平台实现短信验证功能
第一步,当然是登上阿里云了。
然后选中左侧菜单栏的国内消息,在这里添加一个模板和一个签名
ps:签名名称要慎重,不然审核是过不了的,如图:
这个过程差不多一两个小时,这个时候我们可以去创建一个用户AccessKey
点击个人头像选择accesskeys就可以了。
这时候有个弹窗,我选择的是继续使用AccessKey,因为我是小白哈哈哈,如果创建子用户的话后面还要设置权限,大佬可以玩,我用不来。
那Java后台怎么写呢?直接上代码,这是直接能用的类,1111···是一定要改的地方,其他可以不变的
public class AliyunSmsUtils {
//产品名称:云通信短信API产品,不用动
static final String product = "Dysmsapi";
//产品域名,不用动
static final String domain = "dysmsapi.aliyuncs.com";
// 这个是自己的Assesskeys,就是我打马赛克的地方
static final String accessKeyId = "1111111111";
static final String accessKeySecret = "1111111111";
public static SendSmsResponse sendSms(String telephone, String code) throws ClientException {
//可自主设置超时时间
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
//初始化acsClient
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(telephone);
//必填:短信签名,就是我打马赛克的地方
request.setSignName("111111111");
//必填:短信模板,就是我打马赛克的地方
request.setTemplateCode("1111111");
//这个地方根据模板改,具体看情况
request.setTemplateParam("{\"code\":\"" + code + "\"}");
//hint 此处可能会抛出异常 ClientException, InterruptedException
SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
if (sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {
System.out.println("短信发送成功!");
} else {
System.out.println("短信发送失败!");
}
return sendSmsResponse;
}
private static int newcode;
public static int getNewcode() {
return newcode;
}
//生成4位随机数
public static void setNewcode() {
newcode = (int) (Math.random() * 9999) + 100;
}
}
这样就能发送了吗,不可能的,我们还需要一个接口来调用。
/**
* 短信验证码
* 返回验证码
*/
@RequestMapping(value = "/api/resiger/sendCode",method = RequestMethod.GET)
public JsonResult getCode(String telphone)throws ClientException {
JsonResult jsonResult = null;
try{
AliyunSmsUtils.setNewcode();
String code = Integer.toString(AliyunSmsUtils.getNewcode());
SendSmsResponse phoneCode = AliyunSmsUtils.sendSms(telphone,code);
if(phoneCode!=null){
jsonResult = new JsonResult("200","发送成功",code);
}else{
jsonResult = new JsonResult("404","发送失败","");
}
}catch (Exception e){
jsonResult = new JsonResult("500","网络错误","");
}
return jsonResult;
}
以表诚意,我来测试一下
好了,这个就到这里吧,是不是很简单呢?