亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)發(fā)送手機(jī)短信語音驗(yàn)證功能代碼實(shí)例

 更新時(shí)間:2019年09月17日 09:57:47   作者:冰湖一角  
這篇文章主要介紹了Java實(shí)現(xiàn)發(fā)送手機(jī)短信語音驗(yàn)證功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了Java實(shí)現(xiàn)發(fā)送手機(jī)短信語音驗(yàn)證功能代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

利用第三方平臺(tái)可以實(shí)現(xiàn)發(fā)送手機(jī)短信驗(yàn)證碼和語音驗(yàn)證碼的功能,本文使用框架是struts2+spring+hibernate,現(xiàn)就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;
  // 發(fā)送短信驗(yàn)證碼
  public String sensSms() {
    try {
      result.setResult(JsonResult.SUCCESS);
      if (model.getType() == PhoneVerifyType.REGISTER) {
        if (userVerifyService.checkRegisterPhone(model.getPhone())) {
          result.setErrorMessage("該手機(jī)號(hào)已注冊(cè)");
          result.setResult(JsonResult.ERROR);
          return SUCCESS;
        }
      }
      if (!phoneDetectService.check(model.getPhone())) {
        result.setErrorMessage("該手機(jī)號(hào)異常,不能進(jìn)行驗(yàn)證操作");
        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("尊敬的用戶,您的驗(yàn)證碼是:%s", code), "【XX系統(tǒng)名】")) {
        userPhoneVerifyService.record(model.getPhone(), model.getType(), code, model.getUserId());
      } else {
        result.setErrorMessage("很抱歉,發(fā)送短信失敗,請(qǐng)稍后再試");
        result.setResult(JsonResult.ERROR);
        return SUCCESS;
      }
      result.setErrorMessage( "短信驗(yàn)證碼發(fā)送成功,請(qǐng)?jiān)?分鐘內(nèi)及時(shí)使用,謝謝!");
    } catch (Exception e) {
      e.printStackTrace();
    }

    return SUCCESS;
  }
  
  // 發(fā)送語音驗(yàn)證碼
  public String sensVoice() {
    try {
      result.setResult(JsonResult.SUCCESS);
      if (model.getType() == PhoneVerifyType.REGISTER) {
        if (userVerifyService.checkRegisterPhone(model.getPhone())) {
          result.setErrorMessage("該手機(jī)號(hào)已注冊(cè)");
          result.setResult(JsonResult.ERROR);
          return SUCCESS;
        }
      }
      if (!phoneDetectService.check(model.getPhone())) {
        result.setErrorMessage("該手機(jī)號(hào)異常,不能進(jìn)行驗(yàn)證操作");
        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("很抱歉,發(fā)送語音失敗,請(qǐng)稍后再試");
        result.setResult(JsonResult.ERROR);
        return SUCCESS;
      }
      result.setErrorMessage("語音驗(yàn)證碼發(fā)送成功,請(qǐng)?jiān)?分鐘內(nèi)及時(shí)使用,謝謝!");
    } 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;
  }
}

以上是干貨分享,已測(cè)試驗(yàn)證過!

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Boot 之HelloWorld開發(fā)案例

    Spring Boot 之HelloWorld開發(fā)案例

    這篇文章主要介紹了Spring Boot 之HelloWorld開發(fā)案例,需要的朋友可以參考下
    2017-04-04
  • spring?cloud?gateway中netty線程池小優(yōu)化

    spring?cloud?gateway中netty線程池小優(yōu)化

    這篇文章主要介紹了spring?cloud?gateway中netty線程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • java字符串常用操作方法(查找、截取、分割)

    java字符串常用操作方法(查找、截取、分割)

    今天小編就為大家分享一篇java字符串常用操作方法(查找、截取、分割),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 關(guān)于Springboot打成JAR包后讀取外部配置文件的問題

    關(guān)于Springboot打成JAR包后讀取外部配置文件的問題

    這篇文章主要介紹了關(guān)于Springboot打成JAR包后讀取外部配置文件的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Springboot?@Async多線程獲取返回值方式

    Springboot?@Async多線程獲取返回值方式

    這篇文章主要介紹了Springboot?@Async多線程獲取返回值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 從HelloWorld和文檔注釋開始入門Java編程

    從HelloWorld和文檔注釋開始入門Java編程

    這篇文章主要介紹了從HelloWorld和文檔注釋開始入門Java編程,涉及到Javadoc工具的使用,需要的朋友可以參考下
    2015-10-10
  • SpringMVC的處理器攔截器HandlerInterceptor詳解

    SpringMVC的處理器攔截器HandlerInterceptor詳解

    這篇文章主要介紹了SpringMVC的處理器攔截器HandlerInterceptor詳解,SpringWebMVC的處理器攔截器,類似于Servlet開發(fā)中的過濾器Filter,用于處理器進(jìn)行預(yù)處理和后處理,需要的朋友可以參考下
    2024-01-01
  • SpringBoot-RestTemplate實(shí)現(xiàn)調(diào)用第三方API的方式

    SpringBoot-RestTemplate實(shí)現(xiàn)調(diào)用第三方API的方式

    RestTemplate?是由?Spring?提供的一個(gè)?HTTP?請(qǐng)求工具,它提供了常見的REST請(qǐng)求方案的模版,例如?GET?請(qǐng)求、POST?請(qǐng)求、PUT?請(qǐng)求、DELETE?請(qǐng)求以及一些通用的請(qǐng)求執(zhí)行方法?exchange?以及?execute,下面看下SpringBoot?RestTemplate調(diào)用第三方API的方式
    2022-12-12
  • 詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源

    詳解SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源

    這篇文章主要為大家介紹了SpringBoot Mybatis如何對(duì)接多數(shù)據(jù)源實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • RocketMQ實(shí)現(xiàn)消息分發(fā)的步驟

    RocketMQ實(shí)現(xiàn)消息分發(fā)的步驟

    RocketMQ 實(shí)現(xiàn)消息分發(fā)的核心機(jī)制是通過 Topic、Queue 和 Consumer Group 的配合實(shí)現(xiàn)的,下面給大家介紹RocketMQ實(shí)現(xiàn)消息分發(fā)的步驟,感興趣的朋友一起看看吧
    2024-03-03

最新評(píng)論