java實現手機簡訊驗證全過程

來源:互聯網
上載者:User

標籤:設定   line   @class   ret   config   建立   lin   bcd   cep   

手機簡訊驗證現在在各種系統可以說都是用的非常普遍的,這個可能是方便和安全性的考慮,所以才廣泛的使用,這篇文章就以一個簡訊介面的執行個體,來講解一下怎麼使用簡訊介面。

一、前期工作

首先,我們需要選定一家簡訊介面的公司,然後去註冊和擷取一系列的ID等,然後就可以正式的建立我們的簡訊業務了。下面以某個簡訊介面為例講解。

1.1、註冊

http://www.miaodiyun.com/index.html(對於用哪個平台的看個人,這個只是執行個體)

1.2、擷取到ACCOUNT SID和AUTH TOKEN

1.3、建立簡訊模板

如,點擊組態管理,然後進入到簡訊模板,再點擊建立模板,建立好你的簡訊模板

下面給出我的模板作為參考。

注意:上面建立的簡訊模板的資訊,需要在代碼中用到,並且一定需要保持一致,否則,會出現異常。

例如,上面的簡訊模板的資訊應為:“【歐陽科技】登入驗證碼:{1},如非本人操作,請忽略此簡訊。”,{1}為預留位置,是你的簡訊驗證碼。

好了,有了這些準備之後,就可以開始發簡訊了。

二、具體代碼

config.java:
這個類主要是一些常亮參數的配置資訊。

這裡我們需要修改我們註冊時擷取到的ACCOUNT SIDAUTH TOKEN

/** * 系統常量 */public class Config{    /**     * url前半部分     */    public static final String BASE_URL = "https://api.miaodiyun.com/20150822";    /**     * 開發人員註冊後系統自動產生的帳號,可在官網登入後查看     */    public static final String ACCOUNT_SID = "aac6e373c7534007bf47648ba34ba2f1";    /**     * 開發人員註冊後系統自動產生的TOKEN,可在官網登入後查看     */    public static final String AUTH_TOKEN = "47605360a97a4f81bcd576e8e0645edf";    /**     * 響應資料類型, JSON或XML     */    public static final String RESP_DATA_TYPE = "json";}

HttpUtil.java(http請求工具):

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.URL;import java.net.URLConnection;import java.text.SimpleDateFormat;import java.util.Date;import org.apache.commons.codec.digest.DigestUtils;/** * http請求工具 */public class HttpUtil{    /**     * 構造通用參數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 "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;    }    /**     * post請求     *      * @param url     *            功能和操作     * @param body     *            要post的資料     * @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();            // 設定串連參數            conn.setDoOutput(true);            conn.setDoInput(true);            conn.setConnectTimeout(5000);            conn.setReadTimeout(20000);            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");            // 提交資料            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");            out.write(body);            out.flush();            // 讀取返回資料            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;    }    /**     * 回調測試載入器方法     *      * @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();            // 設定串連參數            conn.setDoOutput(true);            conn.setDoInput(true);            conn.setConnectTimeout(5000);            conn.setReadTimeout(20000);            // 提交資料            out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");            out.write(body);            out.flush();            // 讀取返回資料            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;    }}

驗證碼通知簡訊介面:(最重要)
這裡需要修改我們在註冊時擷取到的資訊。

  • 修改smsContent
    把這個簡訊的內容修改為你建立的簡訊模板
    注意:一定要保持一致。
    import java.net.URLEncoder;

import com.miaodiyun.httpApiDemo.common.Config;
import com.miaodiyun.httpApiDemo.common.HttpUtil;

/**

  • 驗證碼通知簡訊介面
  • @ClassName: IndustrySMS
  • @Description: 驗證碼通知簡訊介面
  • */
    public class IndustrySMS
    {
    private static String operation = "/industrySMS/sendSMS";

    private static String accountSid = Config.ACCOUNT_SID;
    private static String to = "13767441759";

    private static String code = smsCode();
    // 登入驗證碼:{1},如非本人操作,請忽略此簡訊。
    private static String smsContent = "【歐陽科技】登入驗證碼:"+code+",如非本人操作,請忽略此簡訊。";

    /**

    • 驗證碼通知簡訊
      */
      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);
      }

    //建立驗證碼
    public static String smsCode(){
    String random=(int)((Math.random()9+1)100000)+"";
    System.out.println("驗證碼:"+random);
    return random;
    }
    }

上面這些是主要的類,還有其他的類在文章末尾給出原始碼。### 三、手機簡訊驗證測試

public class Test
{

/** * @param args */public static void main(String[] args){    // 驗證碼通知簡訊介面     IndustrySMS.execute();}

}

##### 原始碼下載https://download.csdn.net/download/sihai12345/10472391>文章有不當之處,歡迎指正,如果喜歡閱讀,你也可以關注我的公眾號:`好好學java`,擷取優質學習資源。

java實現手機簡訊驗證全過程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.