91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java如何實現發送短信驗證碼功能

發布時間:2021-07-10 10:27:49 來源:億速云 閱讀:118 作者:小新 欄目:編程語言

小編給大家分享一下Java如何實現發送短信驗證碼功能,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

一個發送短信驗證碼的功能,使用的是信易通的短信平臺接口,然后在Java中使用HttpClient模擬POST請求或者GET請求(看短信平臺要求,一般的情況下都是POST請求),調用短信平臺提供的接口(遵循短信平臺的接口規范即可)。具體看代碼:

使用HttpClient的時候需要在項目中引入:

commons-httpclient-3.1.jar

這個jar包,

項目結構:

Java如何實現發送短信驗證碼功能

1、創建一個Http的模擬請求工具類,然后寫一個POST方法或者GET方法

/**
 * 文件說明
 * @Description:擴展說明
 * @Copyright: 2015 dreamtech.com.cn Inc. All right reserved
 * @Version: V6.0
 */
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;

/** 
 * @Author: feizi
 * @Date: 2015年4月17日 上午9:26:34 
 * @ModifyUser: feizi
 * @ModifyDate: 2015年4月17日 上午9:26:34 
 * @Version:V6.0
 */
public class HttpRequestUtil {

 /**
  * HttpClient 模擬POST請求
  * 方法說明
  * @Discription:擴展說明
  * @param url
  * @param params
  * @return String
  * @Author: feizi
  * @Date: 2015年4月17日 下午7:15:59
  * @ModifyUser:feizi
  * @ModifyDate: 2015年4月17日 下午7:15:59
  */
 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
  * @Author: feizi
  * @Date: 2015年4月17日 下午7:15:28
  * @ModifyUser:feizi
  * @ModifyDate: 2015年4月17日 下午7:15:28
  */
 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;
 }
}

2、在創建一個類,生成驗證碼,然后傳遞相應的參數(不同的短信平臺接口會有不同的參數要求,這個一般短信平臺提供的接口文檔中都會有的,直接看文檔然后按要求來即可)

/**
 * 文件說明
 * @Description:擴展說明
 * @Copyright: 2015 dreamtech.com.cn Inc. All right reserved
 * @Version: V6.0
 */
package com.demo.util;

import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

/** 
 * @Author: feizi
 * @Date: 2015年4月17日 上午9:24:48 
 * @ModifyUser: feizi
 * @ModifyDate: 2015年4月17日 上午9:24:48 
 * @Version:V6.0
 */
public class SendMsgUtil {

 /**
  * 發送短信消息
  * 方法說明
  * @Discription:擴展說明
  * @param phones
  * @param content
  * @return
  * @return String
  * @Author: feizi
  * @Date: 2015年4月17日 下午7:18:08
  * @ModifyUser:feizi
  * @ModifyDate: 2015年4月17日 下午7:18:08
  */
 @SuppressWarnings("deprecation")
 public static String sendMsg(String phones,String content){
  //短信接口URL提交地址
  String url = "短信接口URL提交地址";

  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
  * @Author: feizi
  * @Date: 2015年4月17日 下午7:19:02
  * @ModifyUser:feizi
  * @ModifyDate: 2015年4月17日 下午7:19:02
  */
 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
  * @Author: feizi
  * @Date: 2015年4月17日 下午7:26:36
  * @ModifyUser:feizi
  * @ModifyDate: 2015年4月17日 下午7:26:36
  */
 public static void main(String[] args) {
//  System.out.println(SendMsgUtil.createRandomVcode());
//  System.out.println("&ecb=12".substring(1));
  System.out.println(sendMsg("18123456789,15123456789", "尊敬的用戶,您的驗證碼為" + SendMsgUtil.createRandomVcode() + ",有效期為60秒,如有疑慮請詳詢400-069-2886(客服電話)【XXX中心】"));
 }
}

然后執行一下,一般的情況下參數傳遞正確,按照接口文檔的規范來操作的話,都會發送成功的,手機都能收到驗證碼的,然后可能會出現的問題就是:發送的短信內容有可能會出現中文亂碼,然后就會發送不成功,按照短信平臺的要求進行相應的編碼即可。一般都會是UTF-8編碼。

以上是“Java如何實現發送短信驗證碼功能”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

灯塔市| 开化县| 瑞金市| 松阳县| 巴南区| 左贡县| 高州市| 寿宁县| 漳浦县| 平湖市| 满城县| 延边| 铜鼓县| 离岛区| 兴山县| 额济纳旗| 云阳县| 石家庄市| 关岭| 苏尼特左旗| 泰州市| 广东省| 华坪县| 崇礼县| 盐山县| 屏东县| 深州市| 莫力| 榕江县| 博爱县| 平乐县| 拜泉县| 沭阳县| 陇南市| 安化县| 苍梧县| 铁岭县| 德江县| 泗阳县| 阜新| 闻喜县|