J2ME飞信协议分析(初稿)

J2ME飞信协议用的是HTTP协议,用POST的方式请求数据,数据采用统一的UTF-8编码,并通过PingPong 维持Session会话。

首先 第一步是向http://nav.m161.com.cn/geadapteruri.aspx请求服务入口,请求时向服务端Post一些客户端参数,如果参数正确服务端将响应服务入口地址,响应数据为XML流,如下所示。

<?xml version="1.0" encoding="utf-8" ?>
<Root xmlns="http://tempuri.org/DateExchange.xsd">
	<Response>
		<Error>0</Error>
		<Memo/>
	</Response>
	<Uri>
	http://liveja.amigo.bjmcc.net/transfer.vurl
	</Uri>
</Root>

XML中包含服务入口 http://liveja.amigo.bjmcc.net/transfer.vurl即为服务地址。

接着需向此URL请求并带上客户端版本和客户端软件类型信息(请求方式POST),如果正常服务端会响应数据包,数据包包含维持会话Session的ID、用户手机号、用户信息、飞信说明等内容,下一步需对数据包进行解析,并把一些有用的信息提取出来,它们是用字符'\002'进行分割。

为了维持会话,下次请求的URL必须带上这个Session ID,否则无法进行下一步请求,如获取的ID为0f850fac-8f99-405f-ab62-5e8ece83724f 那么下次需请求的URL为http://liveja.amigo.bjmcc.net/transfer.vurl?guid=0f850fac-8f99-405f-ab62-5e8ece83724f

数据包格式

HTTP请求数据包用UTF-8编码,每个包有两个部分Header和Payload,Header有4个字节,前三个字节为整个数据包长度(Payload长+4)第一个字节为长度>>16位,第二个字节为>>8位,第三个字节不位移,第四个字节表示处理类型,如一些初始化命令退出等,Payload是可变长的。

类型处理(第四个字节byte)

1:初始化请求

3:初始化响应处理,有导航功能

4:设置用户PingPong等侍时间,客户端更新等

5:第一次用户登录

6:Ping时发送的数据包

7:登出

8:发送聊天信息

9:接收新信息

10:删除用户

11:用户聊天Session

12:更新好友列表

16:服务初始化

导读

S40平台播放多媒体时内存优化 http://fonter.iteye.com/blog/413022

开源一个J2ME解析类 http://fonter.iteye.com/blogs/409830

手机中的重定向问题及处理http://fonter.iteye.com/blog/400836

J2ME如何通过cmwap直接访问互连网http://fonter.iteye.com/blog/400868

J2ME开发中由WAP网关带来的cookie问题http://fonter.iteye.com/blog/399105

安装JAD时提示JAD无效原因之一http://fonter.iteye.com/blog/400888

J2ME网络交互之优化http://fonter.iteye.com/blog/405137

解决Eclipse无法调试J2ME程序的配置方法 http://fonter.iteye.com/blog/405697

准备做个PushMail(推送邮) http://fonter.iteye.com/blog/408368

相关推荐