溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java實現發送短信驗證碼的方法

發布時間:2021-04-15 11:17:21 來源:億速云 閱讀:267 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關java實現發送短信驗證碼的方法的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1.首先下圖為項目的目錄結構,需要帶入三個包:

commons-httpclient-3.1.jar

commons-logging-1.0.4.jar

codec-1.3.jar

java實現發送短信驗證碼的方法

2.其次要創建模擬POST、GET請求的工具類:

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的實例
  HttpClient httpClient = new HttpClient();
 
 
  //創建POST方法的實例
  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) {
   // 發生致命的異常,可能是協議不對或者返回的內容有問題
   System.out.println("請檢查輸入的URL!");
   e.printStackTrace();
  } catch (IOException e) {
   // 發生網絡異常
   System.out.println("發生網絡異常!");
   e.printStackTrace();
  } finally {
   //釋放鏈接
   postMethod.releaseConnection();
 
 
   //關閉HttpClient實例
   if (httpClient != null) {
    ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown();
    httpClient = null;
   }
  }
  return result;
 }
 
 
 /**
  * HttpClient 模擬GET請求
  * 方法說明
  * @Discription:擴展說明
  * @param url
  * @param params
  * @return String
  */
 public static String getRequest(String url, Map<String, String> params) {
  //構造HttpClient實例
  HttpClient client = new HttpClient();
 
 
  //拼接參數
  String paramStr = "";
  for (String key : params.keySet()) {
   paramStr = paramStr + "&" + key + "=" + params.get(key);
  }
  paramStr = paramStr.substring(1);
 
 
  //創建GET方法的實例
  GetMethod method = new GetMethod(url + "?" + paramStr);
 
 
  //接收返回結果
  String result = null;
  try {
   //執行HTTP GET方法請求
   client.executeMethod(method);
 
 
   //返回處理結果
   result = method.getResponseBodyAsString();
  } catch (HttpException e) {
   // 發生致命的異常,可能是協議不對或者返回的內容有問題
   System.out.println("請檢查輸入的URL!");
   e.printStackTrace();
  } catch (IOException e) {
   // 發生網絡異常
   System.out.println("發生網絡異常!");
   e.printStackTrace();
  } finally {
   //釋放鏈接
   method.releaseConnection();
 
 
   //關閉HttpClient實例
   if (client != null) {
    ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();
    client = null;
   }
  }
  return result;
 }
}

3.創建發送短信的方法,其中要通過短信內容要進行設置編碼集為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 {
 /**
  * 發送短信消息
  * 方法說明
  * @Discription:擴展說明
  * @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", "短信類別編號");
  params.put("extno", "擴展編號");
 
  //手機號碼,多個號碼使用英文逗號進行分割
  params.put("hm", phones);
  //將短信內容進行URLEncoder編碼
  params.put("nr", URLEncoder.encode(content));
 
  return HttpRequestUtil.getRequest(url, params);
 }
 
 /**
  * 隨機生成6位隨機驗證碼
  * 方法說明
  * @Discription:擴展說明
  * @return
  * @return String
  */
 public static String createRandomVcode(){
  //驗證碼
  String vcode = "";
  for (int i = 0; i < 6; i++) {
   vcode = vcode + (int)(Math.random() * 9);
  }
  return vcode;
 }
 /**
  * 測試
  * 方法說明
  * @Discription:擴展說明
  * @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", "【簽名】尊敬的用戶,您的驗證碼為" + SendMsgUtil.createRandomVcode() + ",請在10分鐘內輸入。請勿告訴其他人!"));
 }
}

4.調用main方法可以進行測試,如果控臺太輸出返回狀態值不是200,可以參考第三方發短信的文檔返回參數說明。

感謝各位的閱讀!關于“java實現發送短信驗證碼的方法”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女