驗證碼如何使用Java程式實現簡訊傳送
阿新 • • 發佈:2018-11-29
現在是什麼軟體和平臺登入都需要繫結手機號碼,然後通過的簡訊驗證碼進行驗證手機號,那麼軟體平臺是如何Java程式進行簡訊驗證碼自動觸發傳送的呢?今天給大家分享的是Java實現簡訊驗證碼傳送功能。
實現Java驗證碼傳送的第一步:選取可以使用的簡訊平臺
這種平臺的好處是可以測試,如果簡訊平臺的簡訊通道特別慢,可以直接換其他平臺,避免平臺不行造成的返工。
有的平臺是支援介面測試,但是有的平臺不行,可以直接測試就直接測試吧,不能測試的平臺可找平臺客服要介面文件測試。
我選取的這家簡訊
一般測試的時候,帶的簽名都是簡訊平臺自身預設的簽名,但是測試是夠了,正式使用還需要更改,不然傳送的簡訊驗證碼所帶的簽名都是簡訊平臺。
以post方式提交 ,介面地址:
https://vip.veesing.com/smsApi/verifyCode
以下是這個平臺需要上傳的資料
appid提交賬戶
appkey提交賬戶密碼
phone 接收號碼,只能提交1個號碼
templateId 平臺申請的驗證碼模板id
variables 生成的驗證碼變數
示例程式碼
package com.veesing.test; import java.io.IOException; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import com.alibaba.fastjson.JSONObject; import com.veesing.utils.Config; /** * 簡訊驗證碼 * @author MWH * */ public class SmsCodeTest { public static void main(String[] args) { // 獲取連線 HttpClient client = new HttpClient(); // 簡訊驗證碼API介面地址 PostMethod method = new PostMethod("https://vip.veesing.com/smsApi/verifyCode"); // 設定編碼 client.getParams().setContentCharset("UTF-8"); method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=utf-8"); // 手機號碼,一次只能提交一個手機號碼 String phone = "15080929435"; //模板ID(如沒有模板ID請先在平臺上新增並提交驗證碼模板,稽核通過即可使用) String templateId = "36"; // 驗證碼變數(隨機數) Integer num = (int)((Math.random()*9+1)*1000); String variables = num.toString(); System.out.println("驗證碼是:"+variables); // 拼接引數 NameValuePair[] data = { new NameValuePair("appId", appid), new NameValuePair("appKey", appkey), new NameValuePair("phone", phone), new NameValuePair("templateId", templateId), new NameValuePair("variables", variables) }; method.setRequestBody(data); try { client.executeMethod(method); String result = method.getResponseBodyAsString(); // 返回結果 System.out.println(result); JSONObject jsonObject = JSONObject.parseObject(result); // 返回2000則傳送成功(邏輯操作請根據介面文件返回引數自行判斷) if (jsonObject.get("returnStatus").equals("2000")) { System.out.println("成功!"); } else { System.out.println("失敗!"); } // 釋放連線 method.setRequestHeader("Connection", "close"); method.releaseConnection(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
這樣就OK了,測試完畢,萬事大吉,收工回家。