JAVA SGIP 调研文档(一)
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表示监听到下行短信回执报告,在下行短信中会提到
如果行不通的话就给联通的技术支持打电话。我这个流程就是正常的流程。