- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) >
- java如何實(shí)現發(fā)送短信驗證碼
這篇文章主要介紹了java如何實(shí)現發(fā)送,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著(zhù)大家一起了解一下。
最近用學(xué)習了一下調用第三方接口發(fā)送碼的程序,希望能夠幫助到大家。
1.首先下圖為項目的目錄結構,需要帶入三個(gè)包:
commons-httpclient-3.1.jar
commons-logging-1.0.4.jar
codec-1.3.jar
2.其次要創(chuàng )建模擬POST、GET請求的工具類(lèi):
package com.demo.util; import java.io.IOException;import java.util.Map; import org.apache.commons.httpclient.HttpClient;import org.apache.commons.httpclient.HttpException;import org.apache.commons.httpclient.SimpleHttpConnectionManager;import org.apache.commons.httpclient.methods.GetMethod;import org.apache.commons.httpclient.methods.PostMethod; public class HttpRequestUtil { /** * HttpClient 模擬POST請求 * @param url * @param params * @return */ public static String postRequest(String url, Map<String, String> params) { //構造HttpClient的實(shí)例 HttpClient httpClient = new HttpClient(); //創(chuàng )建POST方法的實(shí)例 PostMethod postMethod = new PostMethod(url); //設置請求頭信息 postMethod.setRequestHeader("Connection", "close"); //添加參數 for (Map.Entry<String, String> entry : params.entrySet()) { postMethod.addParameter(entry.getKey(), entry.getValue()); } //使用系統提供的默認的恢復策略,設置請求重試處理,用的是默認的重試處理:請求三次 httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false); //接收處理結果 String result = null; try { //執行Http Post請求 httpClient.executeMethod(postMethod); //返回處理結果 result = postMethod.getResponseBodyAsString(); } catch (HttpException e) { // 發(fā)生致命的異常,可能是協(xié)議不對或者返回的內容有問(wèn)題 System.out.println("請檢查輸入的URL!"); e.printStackTrace(); } catch (IOException e) { // 發(fā)生網(wǎng)絡(luò )異常 System.out.println("發(fā)生網(wǎng)絡(luò )異常!"); e.printStackTrace(); } finally { //釋放鏈接 postMethod.releaseConnection(); //關(guān)閉HttpClient實(shí)例 if (httpClient != null) { ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown(); httpClient = null; } } return result; } /** * HttpClient 模擬GET請求 * 方法說(shuō)明 * @Discription:擴展說(shuō)明 * @param url * @param params * @return String */ public static String getRequest(String url, Map<String, String> params) { //構造HttpClient實(shí)例 HttpClient client = new HttpClient(); //拼接參數 String paramStr = ""; for (String key : params.keySet()) { paramStr = paramStr + "&" + key + "=" + params.get(key); } paramStr = paramStr.substring(1); //創(chuàng )建GET方法的實(shí)例 GetMethod method = new GetMethod(url + "?" + paramStr); //接收返回結果 String result = null; try { //執行HTTP GET方法請求 client.executeMethod(method); //返回處理結果 result = method.getResponseBodyAsString(); } catch (HttpException e) { // 發(fā)生致命的異常,可能是協(xié)議不對或者返回的內容有問(wèn)題 System.out.println("請檢查輸入的URL!"); e.printStackTrace(); } catch (IOException e) { // 發(fā)生網(wǎng)絡(luò )異常 System.out.println("發(fā)生網(wǎng)絡(luò )異常!"); e.printStackTrace(); } finally { //釋放鏈接 method.releaseConnection(); //關(guān)閉HttpClient實(shí)例 if (client != null) { ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown(); client = null; } } return result; }}
3.創(chuàng )建發(fā)送短信的方法,其中要通過(guò)短信內容要進(jìn)行設置編碼集為utf-8,調用第三方接口傳參要按照第三方文檔規范:
package com.demo.util; import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.HashMap;import java.util.Map; public class SendMsgUtil { /** * 發(fā)送短信消息 * 方法說(shuō)明 * @Discription:擴展說(shuō)明 * @param phones * @param content * @return * @return String */ @SuppressWarnings("deprecation") public static String sendMsg(String phones,String content) { try { content = java.net.URLEncoder.encode(content,"utf-8"); System.out.println(content); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } //短信接口URL提交地址 String url = "https://api.dingdongcloud.com/v1/sms/sendyzm?apikey=b46c4961aa875f626b7924aace0d53f7&mobile="+phones+"&content="+content; Map<String, String> params = new HashMap<String, String>(); params.put("zh", "賬號"); params.put("mm", "密碼"); params.put("dxlbid", "短信類(lèi)別編號"); params.put("extno", "擴展編號"); //手機號碼,多個(gè)號碼使用英文逗號進(jìn)行分割 params.put("hm", phones); //將短信內容進(jìn)行URLEncoder編碼 params.put("nr", URLEncoder.encode(content)); return HttpRequestUtil.getRequest(url, params); } /** * 隨機生成6位隨機驗證碼 * 方法說(shuō)明 * @Discription:擴展說(shuō)明 * @return * @return String */ public static String createRandomVcode(){ //驗證碼 String vcode = ""; for (int i = 0; i < 6; i++) { vcode = vcode + (int)(Math.random() * 9); } return vcode; } /** * 測試 * 方法說(shuō)明 * @Discription:擴展說(shuō)明 * @param args * @return void */ public static void main(String[] args) {// System.out.println(SendMsgUtil.createRandomVcode());// System.out.println("&ecb=12".substring(1)); System.out.println(sendMsg("18201150549", "【簽名】尊敬的用戶(hù),您的驗證碼為" + SendMsgUtil.createRandomVcode() + ",請在10分鐘內輸入。請勿告訴其他人!")); }}
4.調用main方法可以進(jìn)行測試,如果控臺太輸出返回狀態(tài)值不是200,可以參考第三方發(fā)短信的文檔返回參數說(shuō)明。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站