最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java實(shí)現(xiàn)短信通信的完整教程

 更新時(shí)間:2017年05月08日 14:37:56   作者:賣(mài)泡面的小男孩  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)短信通信的完整教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

短信信息的發(fā)送目前已經(jīng)是項(xiàng)目中必不可少的部分,我們?cè)趺赐ㄟ^(guò)web頁(yè)面來(lái)實(shí)現(xiàn)把信息推送到別人手機(jī)上呢?簡(jiǎn)單點(diǎn),編碼的方式簡(jiǎn)單點(diǎn)!看完本篇文章,以后要實(shí)現(xiàn)短信的發(fā)送都只需要知道發(fā)什么?發(fā)給誰(shuí)?就OK了,代碼如下,是不是很簡(jiǎn)單^_^

String result= "";//返回狀態(tài)
Note note = new Note();
String Tel = "17089490559";//接收人手機(jī)號(hào)
String message = "您好!";//短信內(nèi)容
result = note.sendNote(Tel,message);//信息發(fā)送狀態(tài)

要實(shí)現(xiàn)在頁(yè)面或控制臺(tái)輸入一些信息再指定一個(gè)電話號(hào)碼就能把信息發(fā)送給對(duì)方,這對(duì)B/S結(jié)構(gòu)的項(xiàng)目來(lái)說(shuō)可是頭疼的,但我們能不能把要發(fā)送的信息和要發(fā)送的電話號(hào)碼交給一個(gè)負(fù)責(zé)發(fā)送短信的服務(wù)器,由它來(lái)幫我們完成信息的發(fā)送呢?答案是肯定的,只是錢(qián)的問(wèn)題…….(畢竟天下沒(méi)有免費(fèi)的午餐),明白了這一點(diǎn),接下來(lái)就好辦了,我們只要知道服務(wù)器在哪,以及怎么聯(lián)系服務(wù)器不就搞定了。所幸的是Apache給我們提供了一個(gè)HttpClient 子類(lèi),用于幫助我們連接到發(fā)送短信的服務(wù)器,那發(fā)送短信的服務(wù)器在哪呢?網(wǎng)上有各種各樣的短信服務(wù)平臺(tái),接下來(lái)我們以中國(guó)網(wǎng)建為例來(lái)講解短信信息的發(fā)送。
首先,你需要注冊(cè)一個(gè)賬號(hào),注冊(cè)完成后系統(tǒng)會(huì)為你提供一個(gè)用戶名和一個(gè)密鑰(在修改短信密鑰里找到)并且提供5條免費(fèi)短信,對(duì)于測(cè)試來(lái)說(shuō)足夠了,我們需要的就是id和key這兩個(gè)東西,接下來(lái)開(kāi)始吧!

1、導(dǎo)入相關(guān)jar包

相關(guān)jar包:

jar包下載:短信通信

2、制作短信小工具

我們希望的是一勞永逸,做一個(gè)項(xiàng)目就要導(dǎo)包改各種參數(shù)是很費(fèi)勁的,接下來(lái)我們用單例模式來(lái)為我們的項(xiàng)目提供信息修改吧,有信息變動(dòng)我們只需要改配置文件就可以了,代碼部分完全不用變。這樣我們通過(guò)一個(gè)note.properties來(lái)放配置文件,一個(gè)ConfigNoteInfo.java調(diào)用配置文件參數(shù)的類(lèi),以及一個(gè)Note.java實(shí)現(xiàn)短信的發(fā)送的類(lèi)就實(shí)現(xiàn)小工具的制作了,接下來(lái)依次教大家配置這三個(gè)文件。

第一步,我們?cè)陧?xiàng)目里新建一個(gè)叫note.properties的文件,里面的參數(shù)就兩個(gè)(這里是放在src根目錄下里)。

id=xxx(xxx是你注冊(cè)的用戶名)
key=********(注冊(cè)成功后平臺(tái)提供的短信密鑰)

第二步,ConfigNoteInfo.java獲取配置文件中的id和key

public class ConfigNoteInfo {
 private static ConfigNoteInfo configNoteInfo;
 private static Properties properties;

 private ConfigNoteInfo(){
  //note.properties是你在根目錄新建的配置文件
  String configFile="note.properties";
  properties=new Properties();
  InputStream in=ConfigNoteInfo.class.getClassLoader().getResourceAsStream(configFile);
  try {
   properties.load(in);
   in.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
 public static ConfigNoteInfo getInstance(){
  if(configNoteInfo==null){
   configNoteInfo = new ConfigNoteInfo();
  }
  return configNoteInfo;
 }
 public String getString(String key){

  return properties.getProperty(key);
 }
}

第三步,Note.java類(lèi)實(shí)現(xiàn)短信信息的發(fā)送,基于OOP思想,我們還是把短信發(fā)送單獨(dú)提出來(lái)成為一個(gè)方法,讓以后的工作中只需要傳一個(gè)手機(jī)號(hào)和一個(gè)消息字符串就能實(shí)現(xiàn)短信的發(fā)送。(如果是多個(gè)手機(jī)號(hào)可傳手機(jī)號(hào)的數(shù)組或List集合)

package cn.hs.tools;

import java.io.IOException;
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.methods.PostMethod;

/***
 * @author HeShuang
 *@Create_date:2017-5-4
 */
public class Note {
 //短信接口,傳參(手機(jī)號(hào),短信內(nèi)容)即可發(fā)送短信。
 public String sendNode(String Tel,String message) throws HttpException, IOException{
  HttpClient client = new HttpClient(); 
  PostMethod post = new PostMethod("http://utf8.sms.webchinese.cn"); 
  post.addRequestHeader("Content-Type", 
    "application/x-www-form-urlencoded;charset=UTF-8");// 在頭文件中設(shè)置轉(zhuǎn)碼,這里為UTF-8 
  NameValuePair[] data = { 
    new NameValuePair("Uid", ConfigNoteInfo.getInstance().getString("id")), // 注冊(cè)的用戶名,我們通過(guò)單例模式從配置文件id中讀取用戶名。
    new NameValuePair("Key",ConfigNoteInfo.getInstance().getString("key")), // 注冊(cè)成功后,登錄網(wǎng)站后得到的密鑰 ,同樣從配置文件讀取。 
    new NameValuePair("smsMob", Tel), // 傳遞過(guò)來(lái)的手機(jī)號(hào)碼 
    new NameValuePair("smsText", message) // 傳遞過(guò)來(lái)的短信內(nèi)容 
  };
  post.setRequestBody(data); 
  client.executeMethod(post);

  Header[] headers = post.getResponseHeaders(); 
  int flag = post.getStatusCode(); //返回狀態(tài),參照API
  System.out.println("statusCode:" + flag); 
  for (Header h : headers) { 
   System.out.println("---" + h.toString()); 
  } 
  String result = new String(post.getResponseBodyAsString().getBytes( 
    "UTF-8")); 
  System.out.println(result); 

  String info="";
  if(Integer.parseInt(result.trim())>0){
   info="發(fā)送成功!";
  }
  switch (result.trim()) {
   case "-1":
    info="用戶賬號(hào)不存在!";
    break;
   case "-2":
    info="接口密鑰不正確";
    break;
   case "-3":
    info="尊敬的用戶,請(qǐng)您先把短信費(fèi)用繳了!";
    break;
   case "-4":
    info="手機(jī)號(hào)格式不正確!";
    break;
   case "-6":
    info="IP存在限制!";
    break;
   case "-11":
    info="該用戶已被禁用!";
    break;
   case "-14":
    info="短信內(nèi)容存在非法字符!";
    break;
   default:
    break;
  }
 return info;
 }

}


第四步,在其他地方調(diào)用我們的工具類(lèi)實(shí)現(xiàn)短信的發(fā)送。

String result= "";//返回狀態(tài)
Note note = new Note();
String Tel = "17089490559";//要發(fā)送的手機(jī)號(hào)
String message = "您好!";//要發(fā)送的短信信息
result = note.sendNote();//獲取信息發(fā)送狀態(tài)

就此,java實(shí)現(xiàn)短信信息的發(fā)送功能就完成了,并且我們還把它做成了一個(gè)小工具類(lèi),信息有變更時(shí),只需要改配置文件就行了,一次編寫(xiě),處處復(fù)制。

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

相關(guān)文章

  • jpa 使用@Column來(lái)定義字段類(lèi)型

    jpa 使用@Column來(lái)定義字段類(lèi)型

    這篇文章主要介紹了jpa使用@Column來(lái)定義字段類(lèi)型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring多線程通過(guò)@Scheduled實(shí)現(xiàn)定時(shí)任務(wù)

    Spring多線程通過(guò)@Scheduled實(shí)現(xiàn)定時(shí)任務(wù)

    這篇文章主要介紹了Spring多線程通過(guò)@Scheduled實(shí)現(xiàn)定時(shí)任務(wù),@Scheduled?定時(shí)任務(wù)調(diào)度注解,是spring定時(shí)任務(wù)中最重要的,下文關(guān)于其具體介紹,需要的小伙伴可以參考一下
    2022-05-05
  • SpringBoot項(xiàng)目中使用Mockito的示例代碼

    SpringBoot項(xiàng)目中使用Mockito的示例代碼

    這篇文章主要介紹了SpringBoot項(xiàng)目中使用Mockito的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • java中處理stream.filter()的實(shí)例代碼

    java中處理stream.filter()的實(shí)例代碼

    stream()是Java 8中的一個(gè)函數(shù)式接口,用于處理數(shù)據(jù)流,它可以從一個(gè)數(shù)據(jù)源,如集合,數(shù)組等生成一個(gè)流,這篇文章主要給大家介紹了關(guān)于java中處理stream.filter()的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • Java代理的幾種實(shí)現(xiàn)方式總結(jié)

    Java代理的幾種實(shí)現(xiàn)方式總結(jié)

    本文將通過(guò)例子說(shuō)明java代理的幾種實(shí)現(xiàn)方式,并比較它們之間的差異,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下
    2023-12-12
  • 配置springboot項(xiàng)目動(dòng)靜分離打包分離lib方式

    配置springboot項(xiàng)目動(dòng)靜分離打包分離lib方式

    本文介紹了如何將Spring?Boot工程中的靜態(tài)資源和配置文件分離出來(lái),以減少jar包大小,方便修改配置文件,通過(guò)在jar包同級(jí)目錄創(chuàng)建config目錄,并在pom文件中進(jìn)行相應(yīng)配置,可以實(shí)現(xiàn)配置文件的外部化,打包后的jar包和lib文件夾中分別存放了第三方j(luò)ar包和靜態(tài)資源文件
    2025-02-02
  • SpringCloudGateway路由失效問(wèn)題

    SpringCloudGateway路由失效問(wèn)題

    本文主要分析了SpringCloudGateway整合nacos時(shí)路由失效的問(wèn)題,作者通過(guò)斷點(diǎn)跟蹤發(fā)現(xiàn)在RouteToRequestUrlFilter類(lèi)中報(bào)錯(cuò),原因是在讀取配置文件的時(shí)候,沒(méi)有解析到對(duì)應(yīng)的host主機(jī),進(jìn)一步發(fā)現(xiàn)這里包含了一段正則表達(dá)式驗(yàn)證,驗(yàn)證配置的服務(wù)名稱(chēng)是否合法
    2024-10-10
  • Java?Web應(yīng)用小案例之實(shí)現(xiàn)用戶登錄功能全過(guò)程

    Java?Web應(yīng)用小案例之實(shí)現(xiàn)用戶登錄功能全過(guò)程

    在Java開(kāi)發(fā)過(guò)程中實(shí)現(xiàn)用戶的注冊(cè)功能是最基本的,這篇文章主要給大家介紹了關(guān)于Java?Web應(yīng)用小案例之實(shí)現(xiàn)用戶登錄功能的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java獲取視頻時(shí)長(zhǎng)和封面截圖

    Java獲取視頻時(shí)長(zhǎng)和封面截圖

    這篇文章主要為大家詳細(xì)介紹了如何使用Java獲取視頻時(shí)長(zhǎng)和封面截圖功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-03-03
  • Java實(shí)現(xiàn)遞歸山脈

    Java實(shí)現(xiàn)遞歸山脈

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)遞歸山脈,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評(píng)論

曲麻莱县| 历史| 镇巴县| 巴彦淖尔市| 兴国县| 浮山县| 睢宁县| 教育| 探索| 成都市| 航空| 越西县| 新兴县| 大方县| 湖口县| 栾川县| 娄烦县| 东至县| 沙雅县| 西林县| 扎赉特旗| 民丰县| 乐平市| 裕民县| 绥宁县| 平顺县| 三门县| 孟连| 高青县| 龙川县| 河间市| 武夷山市| 彭山县| 甘肃省| 勃利县| 襄樊市| 晋州市| 原平市| 本溪市| 襄汾县| 东丽区|