hi~everyone~~~
首先,SGIP有多個廠商的API實現,以下代碼均為中興SGIP API(中興的縮寫為zte)的代碼。其實其他廠商的API也都大同小異。
一:準備工作:
1.首先你需要得到sgip的java API包sgip_java.rar。(下載?拷貝?聯通給你的?whatever~)
2.開啟ECLIPSE,並建立兩個JAVA PROJECT,分別命名為:SGIPClientDemo與SGIPServerDemo
3.解壓sgip_java.rar後,將release包下的SGIPClientDemo,SGIPServerDemo的src目錄分別複製到
eclipse的項目中來。
4.將sgip_java\sgip_java\release\api檔案夾下的jar包(com.zte.smgw.api.jar)與
\sgip_java\sgip_java\release\lib檔案夾下的jar包(log4j-1.2.15.jar)添加至
ECLIPSE裡的這兩個項目裡。(JAVA BUILD PATH,不會的話你可以去撞牆了!)
5.將\sgip_java\sgip_java\release\api檔案夾下的兩個設定檔(log4j.properties與sgipconfig.properties)
分別拷貝到ECLIPSE兩個項目中的src目錄下。(這兩個檔案一般情況下不用修改,至少我沒有改~)
PS:最重要的準備工作是你需要去聯通網關申請先關的參數等等等等。讓聯通給你開戶等等等等。
(but thats none of my business right?cuz im a coder.)
二:簡訊上行
簡訊上行流程:測試手機-->聯通網關-->JAVA監聽程式
簡訊上行的原理:
(在測試工作之前需要讓聯通網關配置好我們監聽上行簡訊的IP和連接埠號碼)
首先測試手機給聯通的一個號段例如105550200508發簡訊,
這個號碼叫特服號碼,之後聯通網關會監聽這個特服號碼,一旦收到往這個特服號碼發送的簡訊後,聯通網關會路由到配置好的IP和連接埠,之後推送這條簡訊息到你的監聽伺服器。監聽伺服器需要一直運行一個多線程的監聽服務。這樣就可以在JAVA程式中收到簡訊內容了。
注意事項:
測試機器的IP與連接埠必須是事先配置好在聯通網關的,並必須可以串連外網,如果外網轉內網的話,需要使用TCP-TRACE工具做IP轉換。
簡訊上行主要用到的是SGIPServerDemo這個項目。
您需要配置四個主要參數,他們分別是:
info.IP = "111.111.11.11";//這個IP是你申請的IP。如果外網轉內網的話請使用強大的TCP-TRACE工具
info.port = 10227;//這個連接埠號碼是你申請的連接埠號碼。
info.userName = "yang";//以此類推,你申請的帳號
info.passWord = "yanglala";//你申請的密碼
以上這四個參數都是聯通為你提供的,不知道的話儘管給他們打電話就好了。
設定完成之後就可以RUN了,就是這麼簡單!
RUN AS -->JAVA APPLICATION 不用我教你了吧?
RUN成功的提示資訊如下:
INFO [main] com.zte.smgw.api.sgip.server.SGIPServer - SGIP server is init success!
INFO [main] com.zte.smgw.socket.server.SocketServer - 11.11.11.11:11111 is begin to listen!
INFO [main] com.zte.smgw.api.sgip.server.SGIPServer - SGIP server is start success!
恭喜你,可以進入下一步了~
拿起您的手機,往你申請的特服號碼發送一條測試簡訊。例如往105550200508,發一條"i luv u"
此時此刻,在receiveThread中的
SGIPDeliver deliver = (SGIPDeliver) msg.obj;
會接收到簡訊內容;
然後把他打出來吧
SGIPDeliverBody a = deliver.getBody();
System.out.println(new String(a.getMessageContent()));
控制台顯示:i luv u.
至此,上行簡訊全部OK。
(中文的問題在這裡就不說了,DIY吧。)
PS:
msg.messageType==1表示監聽到上行簡訊
msg.messageType==2表示監聽到下行簡訊回執報告,在下行簡訊中會提到
如果行不通的話就給聯通的支援人員打電話。我這個流程就是正常的流程。