市面上短信平臺(tái)非常多龄捡,當(dāng)初我剛接手這個(gè)項(xiàng)目的時(shí)候卓嫂,技術(shù)群里的大神介紹給我阿里大于的平臺(tái),但是我接入了幾次聘殖,發(fā)現(xiàn)還是接入還是比較困難晨雳,試了一個(gè)下午的時(shí)間,沒(méi)有接入成功奸腺。然后我就自己百度了一些其他平臺(tái)餐禁,經(jīng)過(guò)多方對(duì)比,最后選擇了互億無(wú)線的短信接口www.ihuyi.com突照,也有贈(zèng)送10條短信使用帮非,注冊(cè)完之后就能送,不夠用的話(huà)可以多注冊(cè)幾個(gè)賬號(hào)哈哈~
好了話(huà)不多說(shuō)讹蘑,現(xiàn)在分享起代碼
首先是生成驗(yàn)證碼的RandUtil類(lèi)末盔。這里驗(yàn)證碼我定義的是6位數(shù),利用隨機(jī)數(shù)生成座慰,為GetMessage提供驗(yàn)證碼陨舱。
i
mport java.util.Random;
public class RandUtil {
? ? public static String getRandNum() {
? ? ? ? String randNum = new Random().nextInt(1000000)+"";
? ? ? ? System.out.println("生成"+randNum);
? ? ? ? if (randNum.length()!=6) {? //如果生成的不是6位數(shù)隨機(jī)數(shù)則返回該方法繼續(xù)生成
? ? ? ? ? ? return getRandNum();
? ? ? ? }
? ? ? ? return randNum;
? ? }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
然后是一個(gè)發(fā)送驗(yàn)證碼的工具類(lèi)QueryUtil。這個(gè)類(lèi)我們?cè)诶锩鎸?xiě)MD5的簽名加密sig和時(shí)間戳timestamp的獲取
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 類(lèi)描述:發(fā)送驗(yàn)證碼工具類(lèi)
*/
public class QueryUtil {
? ? public static String queryArguments(String ACCOUNT_SID,String AUTH_TOKEN, String smsContent,String to) {
? ? ? ? String timestamp = getTimestamp(); //時(shí)間戳
? ? ? ? String sig =? MD5(ACCOUNT_SID,AUTH_TOKEN,timestamp);//簽名認(rèn)證
? ? ? ? String str = "accountSid="+ACCOUNT_SID+"&smsContent="+
? ? ? ? ? ? ? ? smsContent+"&to="+to+"×tamp="+timestamp+"&sig="+sig;
? ? ? ? return str;
? ? }
? ? /**
? ? * MD5加密
? ? * @param args
? ? * @return
? ? */
? ? public static String MD5(String... args){ //動(dòng)態(tài)參數(shù)
? ? ? ? StringBuffer result = new StringBuffer();
? ? ? ? if (args == null || args.length == 0) {
? ? ? ? ? ? return "";
? ? ? ? } else {
? ? ? ? ? ? StringBuffer str = new StringBuffer();
? ? ? ? ? ? for (String string : args) {
? ? ? ? ? ? ? ? str.append(string);
? ? ? ? ? ? }
? ? ? ? ? ? System.out.println("加密前:\t"+str.toString());
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? MessageDigest digest = MessageDigest.getInstance("MD5");
? ? ? ? ? ? ? ? byte[] bytes = digest.digest(str.toString().getBytes());
? ? ? ? ? ? ? ? for (byte b : bytes) {
? ? ? ? ? ? ? ? ? ? String hex = Integer.toHexString(b&0xff);? //轉(zhuǎn)化十六進(jìn)制
? ? ? ? ? ? ? ? ? ? if (hex.length() == 1) {
? ? ? ? ? ? ? ? ? ? ? ? result.append("0"+hex);
? ? ? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? ? ? result.append(hex);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? } catch (NoSuchAlgorithmException e) {
? ? ? ? ? ? ? ? e.printStackTrace();
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? System.out.println("加密后:\t"+result.toString());
? ? ? ? return result.toString();
? ? }
? ? /*
? ? * 獲取時(shí)間戳
? ? */
? ? public static String getTimestamp(){
? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
? ? ? ? Date date = new Date();
? ? ? ? return sdf.format(date);
? ? }
---------------------
作者:hanjun1213
來(lái)源:CSDN
原文:https://blog.csdn.net/hanjun1213/article/details/84206260
版權(quán)聲明:本文為博主原創(chuàng)文章版仔,轉(zhuǎn)載請(qǐng)附上博文鏈接游盲!