您的位置:首页 > 编程语言 > Java开发

联通SGIP1.2短信接口 Java版实现 总结 2013-10-23测试通过

2013-10-23 20:25 501 查看
我的开发过程:

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是什么东西,怎么在客户端使用,怎么在服务端使用(经理的建议当然无条件接受,能更好点就更好点)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: