<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          搞一個短信驗證碼登錄,難嗎?

          共 3927字,需瀏覽 8分鐘

           ·

          2020-12-26 18:33

          程序員的成長之路
          互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
          關(guān)注


          閱讀本文大概需要 4?分鐘。

          來源:blog.csdn.net/classabcd/java/
          article/details/82464582
          • 一,首先添加一個jar包,工具類會用到。
          • 三、編寫http請求工具類
          • 四、生成四位數(shù)的方法
          • 4、執(zhí)行方法execute(),便會發(fā)送成功
          1、構(gòu)造手機驗證碼:使用random對象生成要求的隨機數(shù)作為驗證碼,例如4位驗證碼:1000~9999之間隨機數(shù);
          2、使用接口向短信平臺發(fā)送手機號和驗證碼數(shù)據(jù),然后短信平臺再把驗證碼發(fā)送到制定手機號上,接口參數(shù)一般包括:目標手機號,隨機驗證碼(或包含失效時間),平臺接口地址,平臺口令;
          3、保存接口返回的信息(一般為json文本數(shù)據(jù),然后需轉(zhuǎn)換為json對象格式);
          4、將手機號--驗證碼、操作時間存入Session中,作為后面驗證使用;
          5、接收用戶填寫的驗證碼及其他數(shù)據(jù);
          6、對比提交的驗證碼與Session中的驗證碼是否一致,同時判斷提交動作是否在有效期內(nèi);
          7、驗證碼正確且在有效期內(nèi),請求通過,處理相應的業(yè)務。

          一,首先添加一個jar包,工具類會用到。


          <dependency>
          ??<groupId>commons-codecgroupId>
          ??<artifactId>commons-codecartifactId>
          ??<version>1.11version>
          dependency>

          二、我這里只是編寫一個簡單的短信驗證功能,要是用其他的語音驗證。。。。等等需要去秒滴云官方下載文檔,下面是編寫的一個config文檔,專門存放一些參數(shù)

          三、編寫http請求工具類

          public?class?HttpUtil
          {
          ???/**
          ????*?構(gòu)造通用參數(shù)timestamp、sig和respDataType
          ????*
          ????*?@return
          ????*/

          ???public?static?String?createCommonParam()
          ???
          {
          ??????//?時間戳
          ??????SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyyMMddHHmmss");
          ??????String?timestamp?=?sdf.format(new?Date());


          ??????//?簽名
          ??????String?sig?=?DigestUtils.md5Hex(Config.ACCOUNT_SID?+?Config.AUTH_TOKEN?+?timestamp);


          ??????return?"×tamp="?+?timestamp?+?"&sig="?+?sig?+?"&respDataType="?+?Config.RESP_DATA_TYPE;
          ???}


          ???/**
          ????*?post請求
          ????*
          ????*?@param?url
          ????*?功能和操作
          ????*?@param?body
          ????*?要post的數(shù)據(jù)
          ????*?@return
          ????*?@throws?IOException
          ????*/

          ???public?static?String?post(String?url,?String?body)
          ???
          {
          ??????System.out.println("url:"?+?System.lineSeparator()?+?url);
          ??????System.out.println("body:"?+?System.lineSeparator()?+?body);


          ??????String?result?=?"";
          ??????try
          ??????{
          ?????????OutputStreamWriter?out?=?null;
          ?????????BufferedReader?in?=?null;
          ?????????URL?realUrl?=?new?URL(url);
          ?????????URLConnection?conn?=?realUrl.openConnection();


          ?????????//?設置連接參數(shù)
          ?????????conn.setDoOutput(true);
          ?????????conn.setDoInput(true);
          ?????????conn.setConnectTimeout(5000);
          ?????????conn.setReadTimeout(20000);
          ?????????conn.setRequestProperty("Content-Type",?"application/x-www-form-urlencoded");
          ?????????//?提交數(shù)據(jù)
          ?????????out?=?new?OutputStreamWriter(conn.getOutputStream(),?"UTF-8");
          ?????????out.write(body);
          ?????????out.flush();


          ?????????//?讀取返回數(shù)據(jù)
          ?????????in?=?new?BufferedReader(new?InputStreamReader(conn.getInputStream(),?"UTF-8"));
          ?????????String?line?=?"";
          ?????????boolean?firstLine?=?true;?//?讀第一行不加換行符
          ?????????while?((line?=?in.readLine())?!=?null)
          ?????????{
          ????????????if?(firstLine)
          ????????????{
          ???????????????firstLine?=?false;
          ????????????}?else
          ????????????{
          ???????????????result?+=?System.lineSeparator();
          ????????????}
          ????????????result?+=?line;
          ?????????}
          ??????}?catch?(Exception?e)
          ??????{
          ?????????e.printStackTrace();
          ??????}
          ??????return?result;
          ???}


          ???/**
          ????*?回調(diào)測試工具方法
          ????*
          ????*?@param?url
          ????*?@param?reqStr
          ????*?@return
          ????*/

          ???public?static?String?postHuiDiao(String?url,?String?body)
          ???
          {
          ??????String?result?=?"";
          ??????try
          ??????{
          ?????????OutputStreamWriter?out?=?null;
          ?????????BufferedReader?in?=?null;
          ?????????URL?realUrl?=?new?URL(url);
          ?????????URLConnection?conn?=?realUrl.openConnection();


          ?????????//?設置連接參數(shù)
          ?????????conn.setDoOutput(true);
          ?????????conn.setDoInput(true);
          ?????????conn.setConnectTimeout(5000);
          ?????????conn.setReadTimeout(20000);


          ?????????//?提交數(shù)據(jù)
          ?????????out?=?new?OutputStreamWriter(conn.getOutputStream(),?"UTF-8");
          ?????????out.write(body);
          ?????????out.flush();


          ?????????//?讀取返回數(shù)據(jù)
          ?????????in?=?new?BufferedReader(new?InputStreamReader(conn.getInputStream(),?"UTF-8"));
          ?????????String?line?=?"";
          ?????????boolean?firstLine?=?true;?//?讀第一行不加換行符
          ?????????while?((line?=?in.readLine())?!=?null)
          ?????????{
          ????????????if?(firstLine)
          ????????????{
          ???????????????firstLine?=?false;
          ????????????}?else
          ????????????{
          ???????????????result?+=?System.lineSeparator();
          ????????????}
          ????????????result?+=?line;
          ?????????}
          ??????}?catch?(Exception?e)
          ??????{
          ?????????e.printStackTrace();
          ??????}
          ??????return?result;
          ???}
          }

          四、生成四位數(shù)的方法

          public?static?String?runNumber()?{
          ???String?str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
          ???StringBuilder?sb=new?StringBuilder(4);
          ???for(int?i=0;i<4;i++)
          ???{
          ??????char?ch=str.charAt(new?Random().nextInt(str.length()));
          ??????sb.append(ch);
          ???}
          ???System.out.println(sb.toString());
          ???String?code?=?sb.toString();
          ???return?code;
          }

          4、執(zhí)行方法execute(),便會發(fā)送成功

          public?class?IndustrySMS
          {
          ???private?static?String?operation?=?"/industrySMS/sendSMS";


          ???private?static?String?accountSid?=?Config.ACCOUNT_SID;
          ???private?static?String?to?=?"15342349382";
          ??private?static?String?smsContent?=?"【小陶科技】登錄驗證碼:{"+runNumber().toString()+"},如非本人操作,請忽略此短信。";


          ???/**
          ????*?驗證碼通知短信
          ????*/

          ???public?static?void?execute()
          ???
          {
          ??????String?tmpSmsContent?=?null;
          ???????try{
          ?????????tmpSmsContent?=?URLEncoder.encode(smsContent,?"UTF-8");
          ???????}catch(Exception?e){
          ???????}
          ???????String?url?=?Config.BASE_URL?+?operation;
          ???????String?body?=?"accountSid="?+?accountSid?+?"&to="?+?to?+?"&smsContent="?+?tmpSmsContent
          ???????????+?HttpUtil.createCommonParam();


          ???????//?提交請求
          ???????String?result?=?HttpUtil.post(url,?body);
          ???????System.out.println("result:"?+?System.lineSeparator()?+?result);
          }

          推薦閱讀:
          MySQL 的索引是如何工作的?10 分鐘講清楚!
          5款好用的 REST API 工具,推薦給你!
          5T技術(shù)資源大放送!包括但不限于:C/C++,Linux,Python,Java,PHP,人工智能,單片機,樹莓派,等等。在公眾號內(nèi)回復「2048」,即可免費獲取!!

          微信掃描二維碼,關(guān)注我的公眾號

          朕已閱?

          瀏覽 56
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉色视频 | 91精品久久久久久久久中文字幕 | 成人国产精品视频 | 男人的天堂官网 | 成人操人在线播放 |