日期:2014-05-20  浏览次数:20680 次

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

1 楼 joyfun 2009-06-15  
目前j2me版本的飞信都是走的cmwap吧 根据手机号码登录
目前第三方飞信版本都用的是pc协议吧
2 楼 fonter 2009-06-16  
joyfun 写道

目前j2me版本的飞信都是走的cmwap吧 根据手机号码登录目前第三方飞信版本都用的是pc协议吧

飞信要拿到手机号得走CMWAP,CMNET好像拿不到,手机端的第三方也可走PC协议,只不过要像PC端那样用手机号登录!
3 楼 whaosoft 2009-06-16  
还是的 手机的这个是什么协议的呢
4 楼 rrsy23 2009-06-18  
呵呵 了解哈 还是不错哦