Java實(shí)現(xiàn) 第三方的驗(yàn)證碼發(fā)送問(wèn)題--博客園老牛大講堂
簡(jiǎn)要:本篇文章,主要介紹怎樣利用第三方平臺(tái)實(shí)現(xiàn)短信驗(yàn)證碼的發(fā)送問(wèn)題。--博客園老牛大講堂
1、Java發(fā)送(驗(yàn)證碼,短信)原理--博客園老牛大講堂
1、首先用戶(hù)選定一個(gè)第三方平臺(tái)。
2、進(jìn)行一系列操作,得到這個(gè)平臺(tái)的兩個(gè)固定變量
3、之后進(jìn)行請(qǐng)求這個(gè)平臺(tái)。(這個(gè)平臺(tái)就會(huì)向你指定的手機(jī)發(fā)送驗(yàn)證碼)
2、java發(fā)送驗(yàn)證碼,錢(qián)誰(shuí)出?--博客園老牛大講堂
這個(gè)問(wèn)題有點(diǎn)弱智,但是我剛開(kāi)始就是這么關(guān)心的。可以告訴初學(xué)者
錢(qián)!是開(kāi)發(fā)者出的!2017年4月份。短息驗(yàn)證碼的價(jià)格估計(jì)是0.038元/條左右。
下面說(shuō)開(kāi)發(fā)。
3、第三方平臺(tái)《秒滴科技》注冊(cè)與登錄。--博客園老牛大講堂
建立個(gè)模板,得到審核通過(guò)。

得到模板的幾個(gè)值--博客園老牛大講堂

4、后端代碼:--博客園老牛大講堂
package Tools; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLConnection; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.codec.digest.DigestUtils; public class MessageToos { //博客園老牛大講堂 private String ACCOUNT_SID="*****************";//網(wǎng)頁(yè)上得到的值 private String AUTH_TOKEN="***********************";//網(wǎng)頁(yè)上得到的值 private String BASE_URL="https://api.miaodiyun.**********";//路徑 //主要完成接受一個(gè)號(hào)碼,發(fā)送短信,并返回驗(yàn)證碼信息。 ----- 博客園老牛大講堂 public int sentMessage(String phone) throws UnsupportedEncodingException, IOException { int a=getRandNum();//生成一個(gè)6位驗(yàn)證碼 ----- 博客園老牛大講堂 String smsContent = "【老牛大講堂科技】驗(yàn)證碼:{"+a+"},打死都不要告訴別人哦!";//這個(gè)要與模板保持一致 String url = BASE_URL + "/industrySMS/sendSMS"; String body = "accountSid=" + ACCOUNT_SID + "&to=" + phone + "&smsContent="+ smsContent + createCommonParam(); String result = post(url, body);// 提交請(qǐng)求 return a; // System.out.println("result:" + System.lineSeparator() + result); } public String createCommonParam() //----- 博客園老牛大講堂 { // 時(shí)間戳 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String timestamp = sdf.format(new Date()); // 簽名 String sig = DigestUtils.md5Hex(ACCOUNT_SID + AUTH_TOKEN + timestamp); return "×tamp=" + timestamp + "&sig=" + sig + "&respDataType=" + "json"; } //----- 博客園老牛大講堂 public String post(String url, String body) throws UnsupportedEncodingException, IOException { // System.out.println("url:" + System.lineSeparator() + url); // System.out.println("body:" + System.lineSeparator() + body); String result = ""; OutputStreamWriter out = null; BufferedReader in = null; URL realUrl = new URL(url); URLConnection conn = realUrl.openConnection(); // 設(shè)置連接參數(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(); // 讀取返回?cái)?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; } return result; } //生成6位驗(yàn)證碼 ----- 博客園老牛大講堂 public static int getRandNum() { return 1 + (int)(Math.random() * ((999999 - 1) + 1)); } public static void main(String[] args) throws UnsupportedEncodingException, IOException{ MessageToos mess=new MessageToos(); mess.sentMessage("187********");//這是你想要向哪個(gè)手機(jī)發(fā)送手機(jī)號(hào) } }

浙公網(wǎng)安備 33010602011771號(hào)