您好,登錄后才能下訂單哦!
本篇文章為大家展示了利用java如何實現一個短信通信功能,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
短信信息的發送目前已經是項目中必不可少的部分,我們怎么通過web頁面來實現把信息推送到別人手機上呢?代碼如下
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包:
jar包下載:短信通信
2、制作短信小工具
我們希望的是一勞永逸,做一個項目就要導包改各種參數是很費勁的,接下來我們用單例模式來為我們的項目提供信息修改吧,有信息變動我們只需要改配置文件就可以了,代碼部分完全不用變。這樣我們通過一個note.properties來放配置文件,一個ConfigNoteInfo.java調用配置文件參數的類,以及一個Note.java實現短信的發送的類就實現小工具的制作了,接下來依次教大家配置這三個文件。
第一步,我們在項目里新建一個叫note.properties的文件,里面的參數就兩個(這里是放在src根目錄下里)。
id=xxx(xxx是你注冊的用戶名) key=********(注冊成功后平臺提供的短信密鑰)
第二步,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類實現短信信息的發送,基于OOP思想,我們還是把短信發送單獨提出來成為一個方法,讓以后的工作中只需要傳一個手機號和一個消息字符串就能實現短信的發送。(如果是多個手機號可傳手機號的數組或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 { //短信接口,傳參(手機號,短信內容)即可發送短信。 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; } }
第四步,在其他地方調用我們的工具類實現短信的發送。
String result= "";//返回狀態 Note note = new Note(); String Tel = "17089490559";//要發送的手機號 String message = "您好!";//要發送的短信信息 result = note.sendNote();//獲取信息發送狀態
上述內容就是利用java如何實現一個短信通信功能,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。