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