java实现短信验证码发送功能

这是一篇使用java+jquery+ajax实现的发送短信验证码功能的技术分享贴,分享给需要的同学,可以用作毕业设计或者自建网站等等(手机号注册、验证等功能)。废话少说,我们进入正题:
准备工作:首先这个功能需要第三方短信平台支持,我这里使用了秒滴平台,也可以使用阿里或者百度的平台,响应速度比较快一点(秒滴有时候响应会有点慢,大型项目不推荐,我们这里用来测试,因为秒滴刚注册会赠送十元账户额度),秒滴每条信息是0.06元。
我们先去秒滴注册个账号,网址:[http://www.miaodiyun.com/auth/login]
接下来我们需要一个发送短信的模板,进入秒滴个人中心后点击左侧配置管理,进去之后新建模板,新建成功之后提交审核,一般半个小时就会审核完成。另外,秒滴可能会派销售人员打电话,嫌麻烦的话就说是学生个人测试用的就ok了。
现在我们可以编写核心类了:
(文章末尾有现成的项目下载地址)

package com.test;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;import org.apache.commons.codec.digest.DigestUtils;
import org.apache.log4j.Logger;
import org.junit.Assert;
import org.junit.Test;
/*** 发送短信验证码* @author QQ:1064885682(有疑问可以加我)**/
public class PhoneCode {private static Logger log = Logger.getLogger(PhoneCode.class);// 短信请求的地址String url = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";// 请求的头String title = "Content-type:application/x-www-form-urlencoded";// 密匙ACCOUNT SID(填入自己的sid)String accountSid = "";//填入自己的authtokenString authtoken = "";// 响应数据的格式String respDataType = "JSON";// 求的内容String smsContent =null;// 手机号String to = "";/*** 单元测试*/@Testpublic void test() {String code = getCode(to);log.debug(code);Assert.assertNotNull(code);}/*** 生成随机数,用作验证码* @return验证码*/public  String getSMSCode(){Random random=new Random(); String nextInt = random.nextInt(1000000)+"";if(nextInt.length()!=6){return getSMSCode();}   else{return nextInt;}   }int min = 30;public String getCode(String to){int minue = 30;System.out.println("String to"+to);String timestamp = getTimestamp();String smsCode = getSMSCode();smsContent=String.format("【XXXX科技】您的验证码为"+smsCode+",请于"+minue+"分钟内正确输入,如非本人操作,请忽略此短信。");//这里需要与模板匹配System.err.println(smsContent.length());String boby="accountSid="+accountSid+"&smsContent="+smsContent+"&to="+to+timestamp+"&respDataType="+respDataType;String sta = post(url,boby);System.out.println(sta);System.out.println("body:"+boby);//return post;return smsCode;}// 返回时间和签名public String getTimestamp() {// 时间戳Date date = new Date();SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyMMddHHmmss");String timestamp = simpleDateFormat.format(date);// 获取签名String sig = DigestUtils.md5Hex(accountSid + authtoken + timestamp);return "&timestamp=" + timestamp + "&sig=" + sig;}// 通过post方法提交数据和获取提交的数据public String post(String url, String boby) {String redilt = null;try {URL urls = new URL(url);URLConnection openConnection = urls.openConnection();// 设置连接参数openConnection.setDoOutput(true);openConnection.setDoInput(true);//超时openConnection.setConnectTimeout(5000);//读取超时openConnection.setReadTimeout(20000);//提交发送的数据OutputStreamWriter out = new OutputStreamWriter(openConnection.getOutputStream(), "utf-8");out.write(boby);out.flush();out.close();// 获取发送的数据BufferedReader buff = new BufferedReader(new InputStreamReader(openConnection.getInputStream(), "utf-8"));String str = null;boolean boo = true;while ((str = buff.readLine()) != null) {if (boo)boo = false;elsestr += System.lineSeparator();redilt += str;}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return redilt;}}

运行结果:

源码地址:源码地址
最后,项目实际应用时推荐使用ajax异步提交,返回验证码,进行验证,这里就不累述啦。

java实现短信验证码发送功能相关推荐

  1. php调用nexmo发送短信,在 Laravel 中 “规范” 的开发短信验证码发送功能

    Laravel简介 Laravel是一套简洁.优雅的PHP Web开发框架(PHP Web Framework).它可以让你从面条一样杂乱的代码中解脱出来:它可以帮你构建一个完美的网络APP,而且每行 ...

  2. java实现短信验证码发送(架子是springboot 服务平台选择腾讯云短信服务)

    业务需求:公司扩展新业务,新增短信验证码提醒服务,负责功能模块完善 暂时只研究了腾讯短信服务的发送(看api谁都能copy出来),短信状态回执(也挺简单,只是自己想复杂了),短信回复回执(暂时没弄明白 ...

  3. 一对一直播app源码实现短信验证码发送功能的详细步骤

    以前很多的一对一直播app源码,是通过用户注册时设置账号和密码进行登陆的,但是这样有非常明显的缺点,时间久了之后,很多用户会忘记账号或密码,找回的步骤也会比较繁琐.随着手机实名化的进行,越来越多的用户 ...

  4. java实现短信验证码发送(基于阿里云短信sdk)

    随着互联网的兴起,各行各业的需求都在不断的增加.随着业务的扩大,企业给用户发送短信验证码的业务,也是如火如荼.在这里,calvin给各位开发者推荐阿里云短信平台.原因有二:1.接入较简单,开发成本低 ...

  5. 阿里云服务 - Java实现短信验证码发送 --(完整教程)

    我们在实现登录注册的时候,常常用到了短信验证码校验,下面给大家简单介绍阿里云的短信服务平台. 相关jar包: aliyun-java-sdk-core-3.2.2.jar(点此下载) aliyun-j ...

  6. Java配置短信验证码功能实现录

    Java配置短信验证码功能实现录 1.准备: 1.注册登录腾讯云(搜索短信,进入相应控制页面) 2.有一个对应的Spring项目 2.腾讯云相关操作: 1.进入腾讯云→国内短信→签名管理 2.创建签名 ...

  7. 手机短信验证码登录功能的开发实录(机器识别码、短信限流、错误提示、发送验证码倒计时60秒)

    短信验证码登录功能 项目分析 核心代码 1.外部js库调用 2.HTML容器构建 3.javaScript业务逻辑验证 4.后端验证逻辑 总结 短信验证码是通过发送验证码到手机的一种有效的验证码系统, ...

  8. Java实现短信验证码--(完整教程)

    原 Java实现短信验证码--(完整教程) 2018年04月24日 13:03:12 北山_ 阅读数 19189更多 分类专栏: Java 阿里云 版权声明:本文为博主原创文章,遵循 CC 4.0 B ...

  9. SpringBoot + SpringSecurity 短信验证码登录功能实现

    实现原理 在之前的文章中,我们介绍了普通的帐号密码登录的方式:SpringBoot + Spring Security 基本使用及个性化登录配置(http://www.deiniu.com/artic ...

  10. android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解...

    <Android实现获取短信验证码的功能以及自定义GUI短信验证详解>由会员分享,可在线阅读,更多相关<Android实现获取短信验证码的功能以及自定义GUI短信验证详解(8页珍藏版 ...

最新文章

  1. python金融代码_Python2爬虫代码之获取金融品种行情数据
  2. 基于UDP的DDos反射放大攻击
  3. python字符集_PYTHON 中的字符集
  4. 《系统集成项目管理工程师》必背100个知识点-49质量管理的流程
  5. 直播丨BMMeetup第2期:大模型计算加速技术,2场特邀和7位青年学者技术报告联袂上演...
  6. 原生js实现一个连连看小游戏(一)
  7. mysql索引篇之覆盖索引、联合索引、索引下推
  8. java中子线程与主线程通信_Android笔记(三十二) Android中线程之间的通信(四)主线程给子线程发送消息...
  9. JavaScript 数组 array.at() 获取数组中最后一个元素
  10. 用html语言绘制正弦曲线,使用js画图之正弦曲线
  11. php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)...
  12. Java之volatile
  13. 记录一下weui文档地址
  14. RoboCup智能机器人足球教程(四)
  15. 总管家云CRM:客户不跟踪,销售一场空
  16. Qt 菜鸟的坑 QAbstractSocket::isValid()
  17. .nav ul .mall a:hover 是什么意思
  18. 秀米怎么添加附件链接
  19. 微信公众号Makrdown编辑器,语法你懂吗?
  20. 巨量引擎搜索计划搭建流程和优化技巧

热门文章

  1. 实现表格隔行变色研究
  2. libvlc 裁剪及编译
  3. 计算机桌面文件删除不掉是怎么了,如何解决电脑桌面文件无法删除问题
  4. 市场调查报告写作的基本要求
  5. React路由ReactRouter6
  6. C++:空间坐标映射到球面坐标/全景图
  7. Navicat 15 premium手动备份数据库步骤
  8. 设置Chrome为兼容模式
  9. 区块链是世界第九大奇迹,它在触动钱、信任和权力!
  10. 复利思维,静待时间的玫瑰慢慢绽放