阿里雲短信驗證碼的坑.....

阿里雲短信的坑

博主在集成阿里雲短信的時候發生了此問題:

  1. 明明生成6位數字的驗證碼結果,通過阿里雲短信發送出來有時只有5位。

解決辦法也很簡單我就直接貼代碼,說原因了。
原因是: 問題原因:因爲我返回的隨機驗證碼有時候第一位數字是0。所以,我就把驗證碼中如果第一位是0,就重新隨機。

剛剛: zhenTomcat 指出了我的錯誤,原來是返回到阿里大於裏面的驗證碼,被識別爲數字了…然後第一位數字是0就默認去掉了。他提供的解決方法是在驗證碼外層拼接一個單引號 ”
感謝指出

    /**
     *獲取隨機驗證碼
     * @param len
     * @return
     */
    public static String generNumCode(int len){
        //實例化 StringBuffer ,用作拼接驗證碼
        //博主會在這篇博文發後不久,會更新一篇String與StringBuilder開發時的抉擇的博文。
        StringBuffer code = new StringBuffer();
        /拼接一個不爲0的數字
        code.append(getRandom());
        //長度減1,隨機拼接數字
        for (int i = 0; i < len-1; i++) {
            code.append(new Random().nextInt(10));
        }
        //利用遞歸算法,如果隨機數長度不夠則重新隨機
        if(code.length() != 6){
            return generNumCode(6);
        }else {
            return code.toString();
        }
    }

    /**
     * 使用遞歸算法,獲取第一個隨機數不爲0
     * @return int
     */
    public static int getRandom(){
        int number = new Random().nextInt(10);
        if(0 == number){
            return getRandom();
        }
        return number;
    }

如有建議,歡迎指出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章