我的开发过程:
1:根据联通提供的SGIP接口文档,封装装协议。
2:编写通信流程
3:经理建议由原来的socket换成nio socket
4: 经理建议由原来的把Jar集成到需要调用的应用中变为 独立一个短信应用并用hessian对外发布。别的应用可以访问此接口进行调用。语言无间隔(此出源码中并没有hessian部分。你想怎么独立出一个应用,我不管)。
期间郁闷的地方
1:SGIP接口文档中 有专用SGIP方式与http方式。但是目前联通那边只支持专用SGIP方式。
2:联通那边可以支持多个IP。这意味者你可以把你本机的公网IP加下。本机就可以进行测试。(联通那边做了IP和用户名密码的验证)
3:短信中文乱码。我的应用时utf-8但是接口文档上写的是ucs2问了他们开发,他也说是utf-8.后来一查才知道他们接受的是UTF-16
4:接受短信服务毫无意义。后面有提到。
郁闷的教训: 先把想问的问细问清楚啦。再开始。
源码:已经放到我的资源里面;希望你看到的时候CSDN对我的资源已经审核通过.http://pan.baidu.com/s/13krmf
部署说明:
libs:下是所依赖的jar包。
src:存放源代码。编译的jar包就不提供啦。你编译后记得把里面的2个配置文件放到src下。
src下有2个配置问题。
log4j的配置文件就不用多说啦。级别啥的自己改就行啦。
sgip的配置中你需要修改(用户名 密码 接入号码 区号)前面3个都是联通分配给你的。
sgip.server.ip=
sgip.server.port=
这2个是2个是联通的对接地址 你申请联通的SGIP接口后联通回给你的。
sgip.client.nio=y 如果为y的话默认调用SGIPClient.sendMsg()时将采用NIO socket进行通信。
如果不为y将采用默认的Socket方式进行通信。 前者效率更高。
sgip.submit.usernumber.max 这是配置的与联通通信时一次submit最多支持的号码数。
不能大于100.除非联通那边给你更改。调用SGIPClient传入的号码数不用管。程序做好了拆分。
sgip.message.handle.class=com.core.sgip.interf.DefaultMessageHandler
发送短信与接受短信时的处理类。你可以自己实现com.core.sgip.interf.MessageHandler接口然后更换配置即可。
之所以这么多。是你可以保存发送去的短信 。保存接收到的短信。具体的实现那是你们自己的事。
properties文件打开后如果是unicode编码的形式。那么的开发工具就需要安装插件(至于什么插件自己gg吧。)。
作为客户端发送短信的。已经测试过啦。可以使用。2013-10-23
做为服务器接受短信的代码也写了,但是没有测试。本来要测试的。原因如下:
假如用SGIP接口发送短信到联通的客户。那么联通的客户接受到的短信来源是你的接入号。
客户回短信可以通过联通调用 服务器收到短信
但是如果用SGIP接口发送短信给移动或异网客户目前是不能收到客户回送信息的。。。。
当我写好了程序,测试好了客户端。准备做服务端测试的时候问联通的开发人员才知道有这个事。也是很无语。当然他们也有他们的理由。
由于上述原因。服务器的测试我就没做啦。有兴趣的小伙伴可以自己测试下。反正源码都给你啦随便你该。
测试的话。如果是web工程的话。在web.xml下增加如下配置:
<servlet>
<servlet-name>SGIPServiceListener</servlet-name>
<servlet-class>com.core.sgip.listener.SGIPServiceListener</servlet-class>
<init-param>
<param-name>start</param-name>
<param-value>N</param-value>
</init-param>
<init-param>
<param-name>nio</param-name>
<param-value>Y</param-value>
</init-param>
<load-on-startup>6</load-on-startup>
</servlet>
这个有没有问题我就不知道啦。业务走不通也就没有必要再测试啦。抱歉。
如果看了代码有啥问题或建议或修改的地方可以加入QQ群里讨论下 : 113110460
或者再我的blog中 http://blog.csdn.net/bareheadzzq/进行留言。
个人成长:
1:更知道怎么去封装一个协议啦。 保不准以后需要再封装别的接口使用的协议。(这是联通那边没有Java版的接口demo逼出来的。谢谢)
2:运用了下NIO SOCKET (经理的建议当然无理由推却,能更好点就更好点)。
3:hessian是什么东西,怎么在客户端使用,怎么在服务端使用(经理的建议当然无条件接受,能更好点就更好点)。