1. 程式人生 > >呼叫簡訊介面傳送驗證碼,並對驗證碼進行驗證

呼叫簡訊介面傳送驗證碼,並對驗證碼進行驗證

  • 首先需要對簡訊介面內容進行封裝: 
public class SendMsg2Util {
    private static String url="http://gw.api.taobao.com/router/rest";
    private static String appkey="xxxxxxxx";
    private static String secret="xxxxxxxx";

    public void sendMsg(String name,String phone,String vcode) throws ApiException{
        TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
        AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
        req.setExtend("XXX");
        req.setSmsType("normal");
        req.setSmsFreeSignName("註冊驗證");
        req.setSmsParamString("{\"name\":\""+name+"\",\"code\":\""+vcode+"\"}");
        req.setRecNum(phone);
        req.setSmsTemplateCode("SMS_11415328");
        AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
        System.out.println(phone+"]驗證碼:"+vcode+">"+rsp.getMsg());
    }

    public void sendMsg(String name,String phone) throws ApiException{
        TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
        AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
        req.setExtend("XXX");
        req.setSmsType("normal");
        req.setSmsFreeSignName("變更驗證");
        req.setSmsParamString("{\"name\":\""+name+"\",\"phone\":\""+phone+"\"}");
        req.setRecNum(phone);
        req.setSmsTemplateCode("SMS_11535513");
        AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
        System.out.println(rsp.getBody());
    }


    public String sendVlidMsg(String name,String phone,String vcode) throws ApiException{
        TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
        AlibabaAliqinFcSmsNumSendRequest req = new AlibabaAliqinFcSmsNumSendRequest();
        req.setExtend("XXX");
        req.setSmsType("normal");
        req.setSmsFreeSignName("XXX");
        req.setSmsParamString("{\"name\":\""+name+"\",\"code\":\""+vcode+"\"}");
        req.setRecNum(phone);
        req.setSmsTemplateCode("SMS_52125325");
        AlibabaAliqinFcSmsNumSendResponse rsp = client.execute(req);
        if(rsp.getErrorCode()==null ||rsp.getErrorCode().equals("0")){
            return "0";
        }else{
            return rsp.getMsg();

        }
    }

    public String createRandomVcode(){
        //驗證碼
        String vcode = "";
        for (int i = 0; i < 6; i++) {
            vcode = vcode + (int)(Math.random() * 9);
        }
        return vcode;
    }
}
  • 以上是傳送簡訊的工具類,接下來前臺傳送請求:
  •  <button type="button" class="vcode-btn" id="vcode-btn">獲取驗證碼</button>
     //這些是格式設定,不做參考
     <div class="input_row" style="display: none;" id="vcode_div"><label for="name"><span class="iconfont icon-radiobutton2 medium_size"></span></label>
     <div class="input_row_bd"><input id="vcode" type="text" placeholder="輸入驗證碼" />
     </div>
     <div class="input_row_ft"><i class="weui-icon-warn"id="code_icon"></i></div>
    </div>
     $("#vcode-btn").click(function() {
     $("#vcode_div").show();
       $.ajax({
         type : "post",
         dataType : "text",
         url : "getValidPhoneCode.do",
         data : {
            length : 4,
            phone : phone,
         },
            success : function(result) {
                var rsObj = typeof result === "object" ? result : $.parseJSON(result);
                if (rsObj.status == 0) {
                     var step = 59;
                        $('#vcode-btn').html('重發60');
                        var _res = setInterval(function()
                        {   
                            $("#vcode-btn").attr("disabled", true);//設定disabled屬性
                            $('#vcode-btn').html('重發'+step);
                            step-=1;
                            if(step <= 0){
                            $("#vcode-btn").removeAttr("disabled"); //移除disabled屬性
                            $('#vcode-btn').html('獲取驗證碼');
                            clearInterval(_res);//清除setInterval
                            }
                        },1000);
                }else{
                    alert(rsObj.responseDescription);
                }
            }
    
      })
    })
  • 前臺傳送請求後,後臺對請求作出反應
@RequestMapping("/getValidPhoneCode.do")
@ResponseBody
public void getValidPhoneCode(HttpServletRequest request,
            HttpServletResponse response) {
        ResponseHeader resData = new ResponseHeader();
        resData.setStatus(-1);
        int length = requestUtil.getIntValue(request, "length");
        String phone = requestUtil.getStringValue(request, "phone");
        //此處工具類隨機生成按照需要的位數生成的驗證碼;
        String phonecode = EncodeUtilTools.getRanomNumCode(length);
        request.getSession().setAttribute(phone, phonecode);
        SendMsg2Util sendmsg=new SendMsg2Util();
        String rs="0";
//      resData.setStatus(0);
        try {
            rs=sendmsg.sendVlidMsg(name, phone, phonecode);
            if(rs.equals("0")){
                resData.setStatus(0);
            }else{
                resData.setResponseDescription(rs);
            }
        } catch (ApiException e) {
            resData.setResponseDescription("簡訊介面異常,請稍後再試");
        }
        System.out.println(phone+"]驗證碼:"+phonecode+"_"+rs);

        ResponseUtil.responseJson(response, resData);
        return;
    }

/**
     * 生成隨機數字
     * @param 編碼長度
     * @return String
     */
    public static String getRanomNumCode(int length) {
        Random random = new Random();
        String result = "";
        for (int i = 0; i < length; i++) {

            result += random.nextInt(10);
        }
        return result;
    }
  • 以上就完成的簡訊的傳送功能,接下來就是對驗證碼進行驗證
 $.ajax({
    url : DOMAIN_URL + "/wechat/getCheckSesCode.do",
    data : {
        code : vcode,
        key : localphone,
    },
    type : "post",
    dataType : "text",
    success : function(result) {
        var rsObj = typeof result === "object" ? result : $.parseJSON(result);
        if (rsObj.status == 0) {
            //此處驗證碼正確,給出操作
        }else{
            //驗證碼錯誤,給出相應的操作
        }
    }

});
  • 前臺發出請求驗證驗證碼是否正確,後臺對其作出響應
    /**
     * 檢驗手機校驗的code是否正確
     * @param request
     * @param response
     */
    @RequestMapping("/getCheckSesCode.do")
    @ResponseBody
    public void getCheckSesCode(HttpServletRequest request,
            HttpServletResponse response) {
        ResponseHeader resData = new ResponseHeader();
        resData.setStatus(-1);
        String key = requestUtil.getStringValue(request, "key");
        String code = requestUtil.getStringValue(request, "code");
        if(key!=null &&code!=null){
            String scode=(String) request.getSession().getAttribute(key);
            if(scode.equals(code)){
                resData.setStatus(0);
            }
        }
        ResponseUtil.responseJson(response, resData);
        return;
    }

/**
     * 獲得String型別請求引數
     * 
     * @param request
     * @param name
     * @return
     */
    public String getStringValue(HttpServletRequest request, String name) {
        return StringUtil.isEmpty(name) ? null : request.getParameter(name);
    }
  • 通過以上步驟,就完成了傳送驗證碼以及對驗證碼進行驗證的功能

相關推薦

呼叫簡訊介面傳送驗證驗證進行驗證

首先需要對簡訊介面內容進行封裝:  public class SendMsg2Util { private static String url="http://gw.api.taobao.com/router/rest"; private static Str

演算法 -- 四種方法獲取的最長“迴文串”時間複雜進行分析對比&PHP

迴文串: “迴文串”是一個正讀和反讀都一樣的字串,比如“level”或者“noon”等等就是迴文串。 -- 來自百度百科 關於獲取字串中最長的迴文串的演算法中,目前有很多演算法,本文中主要是用PHP來實現的演算法之一。 演算法一:暴力解法 暴力計算出所有的字串並判斷。時間複雜

去除String中的html標籤進行替換

import java.util.regex.Matcher; import java.util.regex.Pattern; private String cleanHtmlTags(String htmlText) { if (StringUti

讀取Excel檔案Excel檔案進行描述性分析

> mydata<-read.csv("E:\\╰凝初寒つ\\學習檔案\\大資料概論\\R語言\\soapdata.csv",header=T) > dim(mydata) > mydata<-head(mydata,41) >

獲取當前正在執行的虛擬機器(Vmware Workstation)虛擬機器進行控制

vmware workstation 提供了一個命令列工具進行虛擬機器管理 C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe

Android 獲取字串首字母字串列表進行排序。

最近在瞭解環信的過程中,看到裡面有一個可以根據使用者名稱對使用者進行排序的處理。今天單獨測試了一下, 在此做一個整理。 由於工具類HanziToPinyin.class程式碼量有點多,我就放到最後。 先來看獲取一箇中文字串的首字母方法: /** *

C#WPF中使用多文字顯示資料其資料進行關鍵字高亮等操作

需求:針對多文字資訊顯示,我們需要對其內容中的某些關鍵字或者某行進行高亮顯示,並用不同顏色顯示。 分析:在C#中,首先要進行多文字資訊顯示,可以RichTextBox(不要使用TextBox)控制元件,該控制元件由自動換行等功能,具體程式碼如下: /// <summary> /// 向

在servlet中獲取jsp頁面中選中的複選框的值其值進行操作。

jsp部分程式碼:<input type="checkbox" name="checkboxs" value="${stuInfo.sid}"/>動態的為複選框賦值servlet程式碼:String[] ids = request.getParameterValu

java後臺呼叫簡訊介面實現傳送簡訊驗證的控制層實現

1.設計:使用者填寫手機號,點選獲取驗證碼按鈕,controller層獲得所要傳送驗證碼的手機號,隨機生成六位數的驗證碼。呼叫傳送簡訊介面url向此手機號傳送驗證碼。注意:下面的程式碼採用的是雲信使的簡訊驗證碼介面,不同的驗證碼更換不同的url格式,即可。 `

Java專案整合阿里雲SMS簡訊介面傳送驗證

public static Map MessageExecuteMethod(String mobile) throws ClientException { //設定超時時間-可自行調整 System.setProperty(“sun.net.client.defaultConnectTim

基於兩個專案 之間的RabbitMQ 傳送和接收呼叫郵件介面傳送郵件

專案原始碼 下載 第一個專案:qucik4j 下載地址:https://github.com/ZhangHLong/quick4j 作用: 定時監控指定服務埠是否異常,發生異常,會發送MQ訊息 通知email-server服務。

php手機註冊使用者簡訊傳送驗證以及點擊發送驗證的倒計時效果。

php手機註冊傳送簡訊,我們用的是阿里的簡訊服務,首先你要有阿里的賬號,並開通了簡訊服務。可以單條計費也可以買套餐。首先html部分我用的是bootstrap布的頁面:<html lang="en"> <head> <meta chars

Python隨機數random模塊學習實現生成6位驗證

import ID for循環 list 序列 獲取 大小 前言 字符 一、前言 學習python隨機數random模塊的使用 ,並使用模塊中的函數,實現6位驗證碼生成 二、random模塊 1、random.random() 返回0-1直接的隨機數,類型為float &g

取redis中手機驗證驗證是否正確

controller: /** * 校驗驗證碼是否正確 * @param smsCode * @param phone */ @RequestMapping(value = "checkSmsCode",method = RequestMethod.POST) public Result

Python 批量下載驗證圖片及切割驗證圖片識別驗證以識別的文字重命令驗證

1、Python 批量下載驗證碼圖片 2、批量切割驗證碼圖片 3、識別驗證碼,並以識別的文字重命令驗證碼 #!C:/Python27 #coding=utf-8 import pytesseract from pytesser import * from PIL imp

隨機生成200個8位驗證存入mysql資料庫

生成200個8位的驗證碼# -*- coding: utf-8 -*- import mysql.connector import random,string def readkey(num,length): with open('C:/Users/Administ

Python3.4---實戰專案-自動下載圖片驗證儲存到專門資料夾使用圖片驗證庫識別然後打印出來

Python3.4—實戰專案-自動下載圖片驗證碼,並儲存到專門資料夾,使用圖片驗證碼庫識別,然後打印出來 1、環境部署 參考文章《使用Python識別圖片驗證碼》內容,製造好圖片驗證碼識別庫msweb1.dat 1.1、對圖片驗證碼隨時下載的URL地址

kettle 呼叫post介面 出現非法字元 kettle如何呼叫post介面解析

1.kettle post介面非法字元 此post介面在postman中是可以成功呼叫,但是在kettle中呼叫就會報錯,具體報錯資訊請看下面 排查了很久報錯原因是非法字元,最後查出是時間格式的問題,此介面的入參為 jsonArgs=start_time

Java之HttpClient呼叫WebService介面傳送簡訊原始碼實戰

## 摘要 Java之HttpClient呼叫WebService介面傳送簡訊原始碼實戰 ### 一:介面文件 ![Java之HttpClient呼叫WebService介面原始碼-001.png](https://img-blog.csdnimg.cn/img_convert/1e2ea7858d12

設置Eclipse可以Debug模式調試JDK源顯示局部變量的1

一個 拖拽 切換目錄 常用 res detail sdn 路徑 cep 最近突然萌發了研究JDK源碼的想法,所以就想到了在自己常用的Eclipse上可以調試JDK源碼。 整個設置過程也很簡單: 首先你要安裝好JDK(我的JDK安裝路徑根目錄是D:\Java\jdk-8