欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實現(xiàn)發(fā)送短信驗證碼功能

 更新時間:2017年11月23日 16:15:13   作者:鬼腳飛  
這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)發(fā)送短信驗證碼功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

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

commons-httpclient-3.1.jar

這個jar包,

項目結(jié)構(gòu):

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

/**
 * 文件說明
 * @Description:擴(kuò)展說明
 * @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:擴(kuò)展說明
  * @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) {
  //構(gòu)造HttpClient的實例
  HttpClient httpClient = new HttpClient();

  //創(chuàng)建POST方法的實例
  PostMethod postMethod = new PostMethod(url);

  //設(shè)置請求頭信息
  postMethod.setRequestHeader("Connection", "close");

  //添加參數(shù)
  for (Map.Entry<String, String> entry : params.entrySet()) {
   postMethod.addParameter(entry.getKey(), entry.getValue());
  }

  //使用系統(tǒng)提供的默認(rèn)的恢復(fù)策略,設(shè)置請求重試處理,用的是默認(rèn)的重試處理:請求三次
  httpClient.getParams().setBooleanParameter("http.protocol.expect-continue", false);

  //接收處理結(jié)果
  String result = null;
  try {
   //執(zhí)行Http Post請求
   httpClient.executeMethod(postMethod);

   //返回處理結(jié)果
   result = postMethod.getResponseBodyAsString();
  } catch (HttpException e) {
   // 發(fā)生致命的異常,可能是協(xié)議不對或者返回的內(nèi)容有問題
   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實例
   if (httpClient != null) {
    ((SimpleHttpConnectionManager) httpClient.getHttpConnectionManager()).shutdown();
    httpClient = null;
   }
  }
  return result;
 }

 /**
  * HttpClient 模擬GET請求
  * 方法說明
  * @Discription:擴(kuò)展說明
  * @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) {
  //構(gòu)造HttpClient實例
  HttpClient client = new HttpClient();

  //拼接參數(shù)
  String paramStr = "";
  for (String key : params.keySet()) {
   paramStr = paramStr + "&" + key + "=" + params.get(key);
  }
  paramStr = paramStr.substring(1);

  //創(chuàng)建GET方法的實例
  GetMethod method = new GetMethod(url + "?" + paramStr);

  //接收返回結(jié)果
  String result = null;
  try {
   //執(zhí)行HTTP GET方法請求
   client.executeMethod(method);

   //返回處理結(jié)果
   result = method.getResponseBodyAsString();
  } catch (HttpException e) {
   // 發(fā)生致命的異常,可能是協(xié)議不對或者返回的內(nèi)容有問題
   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實例
   if (client != null) {
    ((SimpleHttpConnectionManager) client.getHttpConnectionManager()).shutdown();
    client = null;
   }
  }
  return result;
 }
}

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

/**
 * 文件說明
 * @Description:擴(kuò)展說明
 * @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 {

 /**
  * 發(fā)送短信消息
  * 方法說明
  * @Discription:擴(kuò)展說明
  * @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", "擴(kuò)展編號");

  //手機(jī)號碼,多個號碼使用英文逗號進(jìn)行分割
  params.put("hm", phones);
  //將短信內(nèi)容進(jìn)行URLEncoder編碼
  params.put("nr", URLEncoder.encode(content));

  return HttpRequestUtil.getRequest(url, params);
 }

 /**
  * 隨機(jī)生成6位隨機(jī)驗證碼
  * 方法說明
  * @Discription:擴(kuò)展說明
  * @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:擴(kuò)展說明
  * @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中心】"));
 }
}

然后執(zhí)行一下,一般的情況下參數(shù)傳遞正確,按照接口文檔的規(guī)范來操作的話,都會發(fā)送成功的,手機(jī)都能收到驗證碼的,然后可能會出現(xiàn)的問題就是:發(fā)送的短信內(nèi)容有可能會出現(xiàn)中文亂碼,然后就會發(fā)送不成功,按照短信平臺的要求進(jìn)行相應(yīng)的編碼即可。一般都會是UTF-8編碼。

完整代碼:sendmassage

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 對SpringBoot項目Jar包進(jìn)行加密防止反編譯

    對SpringBoot項目Jar包進(jìn)行加密防止反編譯

    最近項目要求部署到其他公司的服務(wù)器上,但是又不想將源碼泄露出去,要求對正式環(huán)境的啟動包進(jìn)行安全性處理,防止客戶直接通過反編譯工具將代碼反編譯出來,本文介紹了如何對SpringBoot項目Jar包進(jìn)行加密防止反編譯,需要的朋友可以參考下
    2023-10-10
  • Java Thread多線程開發(fā)中Object類詳細(xì)講解

    Java Thread多線程開發(fā)中Object類詳細(xì)講解

    這篇文章主要介紹了Java Thread多線程開發(fā)中Object類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-03-03
  • SpringBoot的reload加載器的方法

    SpringBoot的reload加載器的方法

    本篇文章主要介紹了SpringBoot的reload加載器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • SpringBoot+Websocket實現(xiàn)一個簡單的網(wǎng)頁聊天功能代碼

    SpringBoot+Websocket實現(xiàn)一個簡單的網(wǎng)頁聊天功能代碼

    本篇文章主要介紹了SpringBoot+Websocket實現(xiàn)一個簡單的網(wǎng)頁聊天功能代碼,具有一定的參考價值,有需要的可以了解一下
    2017-08-08
  • Springboot集成Kafka實現(xiàn)producer和consumer的示例代碼

    Springboot集成Kafka實現(xiàn)producer和consumer的示例代碼

    這篇文章主要介紹了Springboot集成Kafka實現(xiàn)producer和consumer的示例代碼,詳細(xì)的介紹了什么是Kafka和安裝Kafka以及在springboot項目中集成kafka收發(fā)message,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Java讀取網(wǎng)絡(luò)文件的實例代碼

    Java讀取網(wǎng)絡(luò)文件的實例代碼

    這篇文章主要介紹了Java讀取網(wǎng)絡(luò)文件的實例代碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • java 如何讀取properties文件

    java 如何讀取properties文件

    這篇文章主要介紹了java 如何讀取properties文件,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • SpringBoot生成jar/war包的布局應(yīng)用

    SpringBoot生成jar/war包的布局應(yīng)用

    在 Spring Boot 中,"布局應(yīng)用"(Application Layout)指的是打包生成的可執(zhí)行 jar 或 war 文件中的內(nèi)容組織結(jié)構(gòu),本文給大家介紹了SpringBoot生成jar/war包的布局應(yīng)用,需要的朋友可以參考下
    2024-02-02
  • spring boot配置druid連接池的完整步驟

    spring boot配置druid連接池的完整步驟

    這篇文章主要給大家介紹了關(guān)于spring boot配置druid連接池的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 使用logback實現(xiàn)日志打印過濾

    使用logback實現(xiàn)日志打印過濾

    這篇文章主要介紹了使用logback實現(xiàn)日志打印過濾的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論