Java实现发送手机短信语音验证功能代码实例

这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

利用第三方平台可以实现发送手机短信验证码和语音验证码的功能,本文使用框架是struts2+spring+hibernate,现就action层给出核心代码功能。

public class VerifyAction extends BaseAction<VerifyRequest> {
  private static final long serialVersionUID = 1L;
  private CommonConfigService commonConfigService;
  private UserPhoneVerifyService userPhoneVerifyService;
  private UserVerifyService userVerifyService;
  private PhoneDetectService phoneDetectService;
  private AccountService accountService;
  // 发送短信验证码
  public String sensSms() {
    try {
      result.setResult(JsonResult.SUCCESS);
      if (model.getType() == PhoneVerifyType.REGISTER) {
        if (userVerifyService.checkRegisterPhone(model.getPhone())) {
          result.setErrorMessage("该手机号已注册");
          result.setResult(JsonResult.ERROR);
          return SUCCESS;
        }
      }
      if (!phoneDetectService.check(model.getPhone())) {
        result.setErrorMessage("该手机号异常,不能进行验证操作");
        result.setResult(JsonResult.ERROR);
        return SUCCESS;
      }
      Dh3TongSmsOperator dh3TongSmsOperator = new Dh3TongSmsOperator(
          commonConfigService.getString("dh3tong", "account"),
          DigestUtil.md5(commonConfigService.getString("dh3tong", "password")));
      String code = RandomUtil.randomNum(6);
      if (dh3TongSmsOperator.send(UUIDGenerator.generate(), model.getPhone(),
          String.format("尊敬的用户,您的验证码是:%s", code), "【XX系统名】")) {
        userPhoneVerifyService.record(model.getPhone(), model.getType(), code, model.getUserId());
      } else {
        result.setErrorMessage("很抱歉,发送短信失败,请稍后再试");
        result.setResult(JsonResult.ERROR);
        return SUCCESS;
      }
      result.setErrorMessage( "短信验证码发送成功,请在5分钟内及时使用,谢谢!");
    } catch (Exception e) {
      e.printStackTrace();
    }

    return SUCCESS;
  }

  // 发送语音验证码
  public String sensVoice() {
    try {
      result.setResult(JsonResult.SUCCESS);
      if (model.getType() == PhoneVerifyType.REGISTER) {
        if (userVerifyService.checkRegisterPhone(model.getPhone())) {
          result.setErrorMessage("该手机号已注册");
          result.setResult(JsonResult.ERROR);
          return SUCCESS;
        }
      }
      if (!phoneDetectService.check(model.getPhone())) {
        result.setErrorMessage("该手机号异常,不能进行验证操作");
        result.setResult(JsonResult.ERROR);
        return SUCCESS;
      }
      String code = RandomUtil.randomNum(6);
      Dh3TongVoiceOperator dh3TongVoiceOperator = new Dh3TongVoiceOperator(
          commonConfigService.getString("dh3tong", "account"),
          DigestUtil.md5(commonConfigService.getString("dh3tong", "password")));
      if (dh3TongVoiceOperator.send(UUIDGenerator.generate(), request.getPhone(), code)) {
        userPhoneVerifyService.record(request.getPhone(), request.getType(), code, request.getUserId());
      } else {
        result.setErrorMessage("很抱歉,发送语音失败,请稍后再试");
        result.setResult(JsonResult.ERROR);
        return SUCCESS;
      }
      result.setErrorMessage("语音验证码发送成功,请在5分钟内及时使用,谢谢!");
    } catch (Exception e) {
      e.printStackTrace();
    }
    return SUCCESS;
  }
  public void setCommonConfigService(CommonConfigService commonConfigService) {
    this.commonConfigService = commonConfigService;
  }
  public void setUserPhoneVerifyService(UserPhoneVerifyService userPhoneVerifyService) {
    this.userPhoneVerifyService = userPhoneVerifyService;
  }
  public void setUserVerifyService(UserVerifyService userVerifyService) {
    this.userVerifyService = userVerifyService;
  }
  public void setPhoneDetectService(PhoneDetectService phoneDetectService) {
    this.phoneDetectService = phoneDetectService;
  }
  public void setAccountService(AccountService accountService) {
    this.accountService = accountService;
  }
}

以上是干货分享,已测试验证过!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-09-16

JAVA实现利用第三方平台发送短信验证码

前段时间自己做的一个小项目中,涉及到用短信验证码登录.注册的问题,之前没涉及过这一块,看了别人的博客其实也是似懂非懂的,现在就将自己做的利用第三方短信平台来发送验证码这个功能记下来. 本文以注册为例,在SpringMVC+Spring+Mybatis框架的基础上完成该短信验证码功能. 发送短信验证码的原理是:随机生成一个6位数字,将该6位数字保存到session当中,客户端通过sessionid判断对应的session,用户输入的验证码再与session记录的验证码进行比较. 为了防止有广告嫌疑

java短信验证码获取次数限制实例

现在不管什么项目,用到短信验证功能,都会在程序上设计一个短信验证码的获取次数限制,这样主要是避免短信验证码接口被刷. 前一段正好做一个项目的用户短信验证码登录功能,就研究了以下,下面贴出来分享一下. 这里涉及到的短信接口,用的第三方短信接口-动力思维思维乐信的(http://www.lx598.com/),如果想了解短信接口接入,可以到他们官网,查看下短信接口API文档说明,参考下面的代码应该就能弄明白. 用户注册部分,主要代码如下: //主要js方法: //获取手机验证码: function

java接入创蓝253短信验证码的实例讲解

说明 项目是springboot框架 1.短信配置文件 包含验证码发送路径.用户名.密码 chuanglan.requesturl= chuanglan.account= chuanglan.pswd= 配置文件 具体值 查看官网 位置查看截图 红框已经标红 2.读取配置文件类 3.发送数据request实体类 public class SmsVariableRequest { private String account; private String password; private St

Android使用Kotlin和RxJava 2.×实现短信验证码倒计时效果

本文介绍了Android使用Kotlin和RxJava 2.×实现短信验证码倒计时效果,分享给大家,具体如下: 场景:注册账号页面时,我们点击按钮发送验证码,在等待验证码时,界面会有倒计时提示,这此期间按钮不可点击.当倒计时结束时,按钮恢复. 实现代码 val timer:TextView = findViewById(R.id.textView) //这里的 timer 就是你要控制显示倒计时效果的 TextView val mSubscription: Subscription? = nul

Java随机生成手机短信验证码的方法

本文实例讲述了Java随机生成手机短信验证码的方法.分享给大家供大家参考,具体如下: /** * 创建指定数量的随机字符串 * @param numberFlag 是否是数字 * @param length * @return */ public static String createRandom(boolean numberFlag, int length){ String retStr = ""; String strTable = numberFlag ? "1234

java实现短信验证码5分钟有效时间

本文实例为大家分享了java实现短信验证码5分钟有效时间,供大家参考,具体内容如下 实现一个发送短信验证码的请求,要求5分钟之内重复请求,返回同一个验证码. 网上可找到几种方案: 如,存储数据库或缓存中.实现起来比较麻烦,舍弃: 另一种方式即本例,使用session存储.其他方式,暂未进一步了解. 实现步骤: (springmvc) 1.controller中,获取session对象,取code,取不到新生成,并存储session中: 2.单手机号发送量,判断并 +1 记入数据库: 3.Time

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

一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口(遵循短信平台的接口规范即可).具体看代码: 使用HttpClient的时候需要在项目中引入: commons-httpclient-3.1.jar 这个jar包, 项目结构: 1.创建一个Http的模拟请求工具类,然后写一个POST方法或者GET方法 /** * 文件说明 * @Descriptio

jQuery实现倒计时重新发送短信验证码功能示例

本文实例讲述了jQuery实现倒计时重新发送短信验证码功能的方法.分享给大家供大家参考,具体如下: <!DOCTYPE html> <html> <head> <script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script> <script type="text/javascript"> var countdown

Python3实现发送邮件和发送短信验证码功能

Python3实现发送邮件: import smtplib from email.mime.text import MIMEText from email.utils import formataddr my_sender = '1434399884@qq.com' # 发件人邮箱账号 my_pass = '*********' # 发件人邮箱的授权码 my_user = '3152609963@qq.com' # 收件人邮箱账号,我这边发送给自己 def mail(): ret= True t

java实现发送短信验证码

最近用学习了一下调用第三方接口发送短信验证码的程序,希望能够帮助到大家. 1.首先下图为项目的目录结构,需要带入三个包: commons-httpclient-3.1.jar commons-logging-1.0.4.jar codec-1.3.jar 2.其次要创建模拟POST.GET请求的工具类: package com.demo.util; import java.io.IOException; import java.util.Map; import org.apache.common

基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)

相关阅读: 基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭) 下面一段代码是小编给大家带来的js发送短信验证码后实现倒计时功能,代码简单易懂. 具体代码如下所示: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus

Android实现发送短信验证码倒计时功能示例

一.简介: 开发中在用户注册或找回密码之类的功能,经常会遇到获取短信验证码,获取验证码后需要等待1分钟倒计时,这段时间是不能再次发送短信请求的. 效果图: 二.实现步骤: 1.一个关键类:CountDownTimer(Android系统自带的倒计时功能类) public class CountDownTimerUtils extends CountDownTimer { private TextView mTextView; //显示倒计时的文字 /** * @param textView Th

基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)

相关阅读: 基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能) 今天测试提了一个bug,发送短信倒计时功能,要求关闭页面也要进行倒计时.这想到了,当年我参与的周杰伦演唱会的先付先抢功能.与之类似,只不过,那个项目的时间都是服务器时间,本人目前有点偷懒,就用客户端的时间了. 一下是完整的代码,只不过在客户端的效率不是很好. <!doctype html> <html lang="en"> <head> <meta

JS 实现发送短信验证码的“59秒后重新发送验证短信”功能

倒计时--从10倒数到0,点击按钮会还原倒计时 <body> <!-- 将textvalue值设为10,从10倒数 --> <input type="text" value="10" id="txt"> <input type="button" value="重新开始" id="btn"> </body> <script&

Android中用Bmob实现短信验证码功能的方法详解

这篇文章主要介绍发送验证码和校验验证码的功能,用到一个第三方平台Bmob,那Bmob是什么呢?Bmob可以开发一个云存储的移动应用软件,他提供了大量的标准的API接口,根据需要接入相关服务,开发者可以更加专注于应用的开发,让产品交付更快速,验证码功能就是其中一个. 一.跟其他第三方一样,我们开发之前要做一些准备工作. 1.首先,去官网注册一个帐号:http://www.bmob.cn/: 2.然后就可以创建应用了:具体怎么做Bmob说得很清楚了(官方操作介绍),如果你不想看,我简单说一下:点击右