Java实现发送手机验证码

来源:互联网 发布:虚与委蛇 知乎 编辑:程序博客网 时间:2024/05/01 23:55

向手机发送验证码在用户注册等等业务中会用到,下面我来介绍如何用Java实现向手机发送验证码。

笔者此处使用的是阿里云的短信服务,首先需要登录阿里云官方网站,找到并开通短信服务,然后需要申请短信签名和模版,


短信签名即一般短信开头用【】扩起的内容,填写完成后申请,一般都能申请通过,个人申请最多只能申请一个短信签名。接下来申请短信模版,


申请短信模版需按照一定的格式,格式在阿里云官网上有详细说明,此处不再赘述。

申请成功后,查看短信模版的模版CODE,在稍后的源代码中需要用到这个信息。


在得到上述模版CODE后,还需要获得Access Key ID 和Access Key Secret ,获得的方法是在页面的右上角用户名处有一个AccessKeys ,点击就可以看到自己的Access Key ID和Access Key Secret .



阿里云提供了Java短信服务的API,但是看起来稍有些麻烦, 在网上有一些方法介绍要创建一个APPKey的方法,目前阿里云主页已经改版,这种方法不再适用。万事具备,下面就来分享和介绍源代码。

import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.IAcsClient;import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest;import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsResponse;import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;import com.aliyuncs.dysmsapi.transform.v20170525.SendSmsResponseUnmarshaller;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.http.FormatType;import com.aliyuncs.http.HttpResponse;import com.aliyuncs.profile.DefaultProfile;import com.aliyuncs.profile.IClientProfile;import java.nio.charset.Charset;import java.text.SimpleDateFormat;import java.util.Date;import java.util.UUID;public class SendCode {public static SendSmsResponse sendSms(String phoneNumber,String code) throws ClientException {System.setProperty("sun.net.client.defaultConnectTimeout", "10000");//不必修改System.setProperty("sun.net.client.defaultReadTimeout", "10000");//不必修改 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", "**********", "*********");//"***"分别填写自己的AccessKey ID和SecretDefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com");//不必修改IAcsClient acsClient = new DefaultAcsClient(profile);//不必修改SendSmsRequest request = new SendSmsRequest();//不必修改request.setPhoneNumbers(phoneNumber);//****处填写接收方的手机号码request.setSignName("孙大大通讯");//此处填写已申请的短信签名request.setTemplateCode("SMS_79105048");//此处填写获得的短信模版CODErequest.setTemplateParam("{\"code\":\""+code+"\"}");//笔者的短信模版中有${code}, 因此此处对应填写验证码 SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);//不必修改return sendSmsResponse;}public static void main(String[] args) throws ClientException, InterruptedException {SendSmsResponse response = sendSms(phoneNumber,code);}}

引用上述源代码需要导入两个jar包,以下是jar包的下载地址:点击打开链接,提取密码为kldm。
最后在阿里云短信服务里充值上两元钱,就可以成功的通过Java向手机发送验证码了!

 
阅读全文
1 0