App下載

如何使用Java實(shí)現(xiàn)手機(jī)短信驗(yàn)證?詳細(xì)過程介紹

猿友 2021-07-22 13:51:47 瀏覽數(shù) (3236)
反饋

一、容聯(lián)云平臺(tái)

容聯(lián)云平臺(tái)是實(shí)現(xiàn)短信驗(yàn)證、還有語音功能等一些操作的平臺(tái),在平臺(tái)注冊(cè)還可以獲得8元的新手額度,一條短信的費(fèi)用是006元,也就是6分錢,在初學(xué)者測(cè)試也是可以非常人性化的,然后我這次進(jìn)行測(cè)試的平臺(tái)呢,也是用到容聯(lián)云給進(jìn)行展示


2021041414111239

二、操作教程

2.1注冊(cè)

2021041414111240

當(dāng)你注冊(cè)進(jìn)去之后會(huì)有8元的新手額度

填寫測(cè)試號(hào)碼

2021041414111241然后這里差不多了跟著下面走著

三、實(shí)踐操作

3.1部署項(xiàng)目使用工具

本次使用的工具是IDEA,然后我為了簡(jiǎn)便就直接創(chuàng)建了Maven項(xiàng)目進(jìn)行開發(fā),因?yàn)槭褂玫組aven之后是直接導(dǎo)入SDK的依賴即可,就不需要管jar包了

3.2具體操作

3.2.1、Maven依賴

<dependencies>
        <dependency>
            <groupId>com.cloopen</groupId>
            <artifactId>java-sms-sdk</artifactId>
            <version>1.0.3</version>
        </dependency>
    </dependencies>

3.2.2、不使用Maven獲取JAR包方式

容聯(lián)云通訊——開發(fā)文檔——下載(短信Demo下載)——SDK參考(JAVA SDK文檔):不使用maven時(shí)需要下載jar包,點(diǎn)擊JAVA SMS SDK進(jìn)入maven下載即可

四、測(cè)試

4.1、示例代碼

在容聯(lián)云已經(jīng)有了測(cè)試的示例,但是我們還需要稍作修改
下面為SDK的示例示例代碼

2021041414111242

這些代碼我們可以直接復(fù)制過去,等下直接進(jìn)行使用,當(dāng)然要注意幾點(diǎn)的地方

4.2、修改步驟

4.2.1、容聯(lián)云的相關(guān)賬號(hào)信息

在這里插入圖片描述

這三個(gè)里面的數(shù)據(jù)就是填寫你容聯(lián)云內(nèi)的開發(fā)者賬號(hào)內(nèi)容

2021041414111344

這是我們要修改的地方之一,修改的內(nèi)容為
(1)accountSId
(2)accountToken
(3)appId

4.2.2、修改測(cè)試號(hào)碼等信息

那么等我們把賬戶信息修改完之后呢,還需要哪些
你在發(fā)送的時(shí)候是不是需要一個(gè)6位的隨機(jī)數(shù)!安排,只需要一條代碼

//隨機(jī)生成6位數(shù)字為驗(yàn)證碼
String code = String.valueOf(Math.random()).substring(2, 8);
System.out.println(code);

我們?cè)賮砜纯催\(yùn)行效果


在這里插入圖片描述

當(dāng)然還有就是你的手機(jī)號(hào)、還有模板、模板的一些參數(shù)

這里的模板就是容聯(lián)云的一個(gè)模板了


2021041414111346

我選的登錄模板,所以選1就好

//需要把驗(yàn)證號(hào)轉(zhuǎn)發(fā)到的手機(jī)號(hào)碼
        String to = "1560*******";
        //在短信管理中選擇模板ID,我選擇的是1
        String templateId = "1";
        //模板參數(shù)
        String[] datas = {code,"30分鐘"};

4.2.3、存放哈希進(jìn)行判斷

//這里是使用了一個(gè)哈希map來存放手機(jī)號(hào)、模板ID、模板參數(shù)
        HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);
        //如果返回0000則正常發(fā)送,否則返回異常
        if("000000".equals(result.get("statusCode"))){
            //正常返回輸出data包體信息(map)
            HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
            Set<String> keySet = data.keySet();
            for(String key:keySet){
                Object object = data.get(key);
                System.out.println(key +" = "+object);
            }
        }else{
            //異常返回輸出錯(cuò)誤碼和錯(cuò)誤信息
            System.out.println("錯(cuò)誤碼=" + result.get("statusCode") +" 錯(cuò)誤信息= "+result.get("statusMsg"));
        }

4.2.4、測(cè)試

運(yùn)行結(jié)束后正常情況沒報(bào)錯(cuò)后一般是手機(jī)立馬會(huì)收到消息的,然后收的驗(yàn)證碼消息是和你的運(yùn)行結(jié)果那串?dāng)?shù)字是一樣的,我們這邊進(jìn)行測(cè)試了一下,下面來看下結(jié)果吧

(1)運(yùn)行結(jié)果


在這里插入圖片描述

(2)手機(jī)收到的短信驗(yàn)證結(jié)果!


在這里插入圖片描述

可以看得到短信驗(yàn)證成功了
下面我在把我的總體測(cè)試代碼發(fā)在下面,但是要記得把相關(guān)的一些數(shù)據(jù)改成自己的不然會(huì)報(bào)錯(cuò)呢

總體測(cè)試代碼

package demo;

import com.cloopen.rest.sdk.BodyType;
import com.cloopen.rest.sdk.CCPRestSmsSDK;
import java.util.HashMap;
import java.util.Set;

/**
 * 短信驗(yàn)證測(cè)試
 * @author 藤井大叔
 */
public class SmsDemo {

    public static void main(String[] args) {
        //生產(chǎn)環(huán)境請(qǐng)求地址:app.cloopen.com
        String serverIp = "app.cloopen.com";
        //請(qǐng)求端口
        String serverPort = "8883";
        //主賬號(hào),登陸云通訊網(wǎng)站后,可在控制臺(tái)首頁看到開發(fā)者主賬號(hào)ACCOUNT SID和主賬號(hào)令牌AUTH TOKEN
        String accountSId = "請(qǐng)?zhí)顚慳ccountSId ";
        String accountToken = "請(qǐng)?zhí)顚慳ccountToken ";
        //請(qǐng)使用管理控制臺(tái)中已創(chuàng)建應(yīng)用的APPID
        String appId = "請(qǐng)?zhí)顚慳ppId ";
        CCPRestSmsSDK sdk = new CCPRestSmsSDK();
        sdk.init(serverIp, serverPort);
        sdk.setAccount(accountSId, accountToken);
        sdk.setAppId(appId);
        sdk.setBodyType(BodyType.Type_JSON);
        //隨機(jī)生成6位數(shù)字為驗(yàn)證碼
        String code = String.valueOf(Math.random()).substring(2, 8);
        System.out.println(code);
        //需要把驗(yàn)證號(hào)轉(zhuǎn)發(fā)到的手機(jī)號(hào)碼
        String to = "請(qǐng)?zhí)顚懯謾C(jī)號(hào)";
        //在短信管理中選擇模板ID,我選擇的是1
        String templateId = "1";
        //模板參數(shù)
        String[] datas = {code,"30分鐘"};
        //這里是使用了一個(gè)哈希map來存放手機(jī)號(hào)、模板ID、模板參數(shù)
        HashMap<String, Object> result = sdk.sendTemplateSMS(to,templateId,datas);
        //如果返回0000則正常發(fā)送,否則返回異常
        if("000000".equals(result.get("statusCode"))){
            //正常返回輸出data包體信息(map)
            HashMap<String,Object> data = (HashMap<String, Object>) result.get("data");
            Set<String> keySet = data.keySet();
            for(String key:keySet){
                Object object = data.get(key);
                System.out.println(key +" = "+object);
            }
        }else{
            //異常返回輸出錯(cuò)誤碼和錯(cuò)誤信息
            System.out.println("錯(cuò)誤碼=" + result.get("statusCode") +" 錯(cuò)誤信息= "+result.get("statusMsg"));
        }
      }
    }

好了,短信驗(yàn)證其實(shí)也是很簡(jiǎn)單的一個(gè)小操作,今天就講到這

到此這本篇關(guān)于如何使用 Java 實(shí)現(xiàn)手機(jī)短信驗(yàn)證功能全過程的文章就介紹到這了,想要了解更多相關(guān) Java 應(yīng)用的其他內(nèi)容請(qǐng)搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持我們!


0 人點(diǎn)贊