阿里雲短信的坑
博主在集成阿里雲短信的時候發生了此問題:
- 明明生成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;
}
完
如有建議,歡迎指出。