java 实现 手机接收短信验证码功能
需求
需要有发送手机短信的平台,这里以阿里云为例。如果没有,就不要试了,不会成功的。
创建一个java项目,直接上代码。
第一种书写方式:
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.profile.DefaultProfile; import com.aliyuncs.profile.IClientProfile;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", "LTAIhbdKGluLaFhY", "gt7DJEk6j8Xh4pVlfbTuU7XUt6jCc3");//后两个分别填写自己的AccessKey ID和Secret DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dysmsapi.aliyuncs.com");//不必修改 IAcsClient acsClient = new DefaultAcsClient(profile);//不必修改 SendSmsRequest request = new SendSmsRequest();//不必修改 //此处填写接收方的手机号码 request.setPhoneNumbers(phoneNumber); //此处填写已申请的短信签名 request.setSignName("活动验证"); //此处填写获得的短信模版CODE request.setTemplateCode("SMS_12830503"); //此处为模板中的变量替换JSON串,根据自己模板样式改动 request.setTemplateParam("{\"product\":\"老王\", \"code\":"+code+"}"); //可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段) //request.setSmsUpExtendCode("90997"); //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者 //request.setOutId("yourOutId"); SendSmsResponse sendSmsRes = acsClient.getAcsResponse(request);//不必修改 return sendSmsRes; } public static void main(String[] args) throws ClientException, InterruptedException { // 前一个参数为接收短信的手机号、后一个参数为短信验证码 SendSmsResponse response = sendSms("*******", "66666"); } }
第二种书写方式:
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;public class SendNote {public static void main(String[] args) 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产品域名(接口地址固定,无需修改)//替换成你的AKfinal String accessKeyId = "LTAIhbdKGluLaFhY";//你的accessKeyId,final String accessKeySecret = "gt7DJEk6j8Xh4pVlfbTuU7XUt6jCc3";//你的accessKeySecret//初始化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个手机号码,批量调用相对于单条调用及时性稍有延迟,验证码类型的短信推荐使用单条调用的方式;发送国际/港澳台消息时,接收号码格式为00+国际区号+号码,如“0085200000000”request.setPhoneNumbers("********");//必填:短信签名-可在短信控制台中找到request.setSignName("活动验证");//必填:短信模板-可在短信控制台中找到,发送国际/港澳台消息时,请使用国际/港澳台短信模版request.setTemplateCode("SMS_12830503");//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为//友情提示:如果JSON中需要带换行符,请参照标准的JSON协议对换行符的要求,比如短信内容中包含\r\n的情况在JSON中需要表示成\\r\\n,否则会导致JSON在服务端解析失败request.setTemplateParam("{\"product\":\"老王\", \"code\":\"666666\"}");//可选-上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)//request.setSmsUpExtendCode("90997");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者request.setOutId("yourOutId");//请求失败这里会抛ClientException异常SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);if(sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK")) {//请求成功System.out.println("短信发送成功");System.out.println(sendSmsResponse);}}}
两种方式基本差不多,看你选哪种了。
短信模板一定要和你自己的一样,否则也不会成功。
java 实现 手机接收短信验证码功能相关推荐
- Java演示手机发送短信验证码功能实现
我们这里采用阿里大于的短信API 第一步:登陆阿里大于,下载阿里大于的SDK a.在阿里大于上创建自己的应用 b.点击配置管理中的验证码,先添加签名,再配置短信模板 第二步:解压相关SDK,第一个为j ...
- 手机接收短信验证码生成(纯数字)
手机接收短信验证码生成--纯数字 Random类中的nextInt( )方法 nextInt() 纯数字短信验证码生成 Random类中的nextInt( )方法 nextInt() 不带参数,不带参 ...
- java + maven 实现发送短信验证码功能
如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html ...
- Java用户注册服务器发送短信验证码功能实现
<–start–> 当客户端发送了http的请求给服务器之后,服务器获取手机号然后调用短信平台给该手机号发送短信验证码. 给服务器发送请求的js代码: <script type=&q ...
- 使用中国网建实现Java向手机发送短信的功能
公司需要使用向指定手机发送验证码的功能,在网上搜了一下,有使用'短信猫'的,有使用WebService的,有使用第三方的,我使用的是中国网建提供的API来实现: 中国网建注册送五条短信和三条彩信做测试 ...
- Java开发完整的短信验证码功能
现代互联网项目中,很多场景下都需要使用一种叫做验证码的技术,常用的有图片验证码,滑块验证码,短信验证码等,本文章描述的就是短信验证码的一个使用教程,从0开始完成一个验证码功能的开发. 版权说明 本文中 ...
- Java实现手机发送短信验证码
发送短信验证码首先要在互亿无线短信平台去开通短信服务,地址"ihuyi.com" 一定要留好自己申请的API ID,API key和模板 参数说明: 代码示例: pom导包 < ...
- Java利用Redis实现短信验证码功能
本文将详情介绍从Redis+阿里云注册短信服务到后端调用等过程. 这个功能比较实用的地方就是注册用户的时候,防止一个用户多个账户注册,因为手机号毕竟有限 短信服务 首先,打开你的阿里云 话不多说,第一 ...
- 阿里云——Java实现手机短信验证码功能
目录 如何实现短信验证码功能 1.准备工作 1.1 注册 阿里云 账号,并完成实名认证.找到短信服务功能. 1.2 开通短信服务 1.3 签名与模板 1.4 获取AccessKey 1.5 打开短信控 ...
最新文章
- 怎么在大学当院系负责人呢?一个case study
- 深入探究ConvNets vs. Transformers,哪种预训练模型的可迁移性更好?
- 关闭 php opcache
- apt mysql 5.1_linux下apt安装mysql导致mysql.user table is damaged
- 哪吒U Pro试驾:透明A柱超实用、满电500公里保底续航
- linux sd卡空间,充分利用树莓派中的SD卡空间
- DeeCamp,(可能是)全球最好的 AI 夏令营
- matlab求解数学题,实验二Matlab求解数学问题
- 【工具】[Listary]好用到哭的快速搜索工具
- C语言如何打开shx文件,shx文件怎么打开 .shx格式打开方式解答
- 苹果妙控鼠标二代(Magic Mouse 2 )如何连接到 Window 10系统
- ubuntu安装WPS字体缺失的解决办法
- linux服务器上有些文件看不到,linux执行脚本时找不到文件怎么解决
- linux/android中aplay/arecord用法以及命令
- linux awk 打印最后一列,使用awk打印从第n个到最后一个的所有列
- android和夜神模拟器哪个好,天天模拟器和夜神安卓模拟器哪个好 两者功能对比...
- gdal gdal2tiles.py 的使用
- java 山寨qq源代码_求一个山寨qq的源代码,要java语言的~谢谢
- 用Java输出100内的质数和合数(包含100)
- 这款开源终端工具逼格更高!比 Xshell 好用