一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - java實現短信通信的完整教程

java實現短信通信的完整教程

2020-09-27 15:33賣泡面的小男孩 JAVA教程

這篇文章主要為大家詳細介紹了java實現短信通信的完整教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下

前言

短信信息的發送目前已經是項目中必不可少的部分,我們怎么通過web頁面來實現把信息推送到別人手機上呢?簡單點,編碼的方式簡單點!看完本篇文章,以后要實現短信的發送都只需要知道發什么?發給誰?就OK了,代碼如下,是不是很簡單^_^

java" id="highlighter_917983">
?
1
2
3
4
5
String result= "";//返回狀態
Note note = new Note();
String Tel = "17089490559";//接收人手機號
String message = "您好!";//短信內容
result = note.sendNote(Tel,message);//信息發送狀態

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

1、導入相關jar包

相關jar包:

java實現短信通信的完整教程

jar包下載:短信通信

2、制作短信小工具

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

第一步,我們在項目里新建一個叫note.properties的文件,里面的參數就兩個(這里是放在src根目錄下里)。

?
1
2
id=xxx(xxx是你注冊的用戶名)
key=********(注冊成功后平臺提供的短信密鑰)

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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類實現短信信息的發送,基于OOP思想,我們還是把短信發送單獨提出來成為一個方法,讓以后的工作中只需要傳一個手機號和一個消息字符串就能實現短信的發送。(如果是多個手機號可傳手機號的數組或List集合)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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 {
 //短信接口,傳參(手機號,短信內容)即可發送短信。
 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");// 在頭文件中設置轉碼,這里為UTF-8
  NameValuePair[] data = {
    new NameValuePair("Uid", ConfigNoteInfo.getInstance().getString("id")), // 注冊的用戶名,我們通過單例模式從配置文件id中讀取用戶名。
    new NameValuePair("Key",ConfigNoteInfo.getInstance().getString("key")), // 注冊成功后,登錄網站后得到的密鑰 ,同樣從配置文件讀取。
    new NameValuePair("smsMob", Tel), // 傳遞過來的手機號碼
    new NameValuePair("smsText", message) // 傳遞過來的短信內容
  };
  post.setRequestBody(data);
  client.executeMethod(post);
 
  Header[] headers = post.getResponseHeaders();
  int flag = post.getStatusCode(); //返回狀態,參照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="發送成功!";
  }
  switch (result.trim()) {
   case "-1":
    info="用戶賬號不存在!";
    break;
   case "-2":
    info="接口密鑰不正確";
    break;
   case "-3":
    info="尊敬的用戶,賣血賣腎,請您先把短信費用繳了!";
    break;
   case "-4":
    info="手機號格式不正確!";
    break;
   case "-6":
    info="IP存在限制!";
    break;
   case "-11":
    info="該用戶已被禁用!";
    break;
   case "-14":
    info="短信內容存在非法字符!";
    break;
   default:
    break;
  }
 return info;
 }
 
}

第四步,在其他地方調用我們的工具類實現短信的發送。

?
1
2
3
4
5
String result= "";//返回狀態
Note note = new Note();
String Tel = "17089490559";//要發送的手機號
String message = "您好!";//要發送的短信信息
result = note.sendNote();//獲取信息發送狀態

就此,java實現短信信息的發送功能就完成了,并且我們還把它做成了一個小工具類,信息有變更時,只需要改配置文件就行了,一次編寫,處處復制。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲狼人香蕉香蕉在线28 | 午夜在线观看免费完整直播网 | 国内外成人在线视频 | 日本视频二区 | 大东北chinesexxxx露脸 | 香港三级血恋3 | 国产欧美日韩高清专区ho | 丰满岳乱妇在线观看视频国产 | 亚洲欧美精品一区二区 | 日本无卡码一区二区三区 | 日本十大顶级绝伦推理片 | 3d动漫美女被吸乳羞羞视频 | 大吊操| 成人国产一区 | 国产精品一在线观看 | 国产亚洲精品激情一区二区三区 | 亚洲高清中文字幕 | 亚洲第一天堂网 | 亚洲日日做天天做日日谢 | 双性肉文高h| chinese军人@gay| 黄漫免费观看 | 男人午夜禁片在线观看 | 精品性久久 | 亚洲 在线 日韩 欧美 | 色综合网亚洲精品久久 | 精品一区二区免费视频蜜桃网 | 日韩亚洲欧美综合一区二区三区 | 草莓影音 | 骚虎最新网址 | 隔壁老王国产在线精品 | 欧美又黄又激烈真实床戏 | 热门小说同人h改编h | 大学生宿舍飞机 free | 91午夜在线观看 | 干露露视频 性感写真 | 99九九成人免费视频精品 | 国产成人精品免费久久久久 | 国产免费专区 | 日本免费三区 | 日本高清中文字幕一区二区三区 |