`
kerlubasola
  • 浏览: 709755 次
文章分类
社区版块
存档分类
最新评论

WAP PUSH解析(2)——WSP以及WBXML编码

 
阅读更多

田海立@CSDN

2012-06-30

WAP PUSH业务是承载在SMS业务之上的,亦即WAP PUSH数据封装在SMS PDU的UserData中。本文分析PDU的UserData中WAP PUSH的WSP和WBXML的编码。

本文以《WAP PUSH解析(1)——SMS PDU编码》中已经讲解了SMS PDU封装的WAP PUSH数据为例来讲解WSP和WBXML的编码。SMS PDU封装在WSP和WBXML外面,所以WSP和WBXML的编码是不考虑数据是否是拼接的长短信的,WSP和WBXML要解析的是SMS PDU(如果分多个SMS发送,这里是拼接后的)的完整UserData。


一、WSP


下面是按次解析的WSP封装




接下来是WBXML封装的SI数据。


二、PUSH SI的封装WBXML


WAP PUSH SI是封装在XML格式中的,但是XML不适合在SMS这种长度极度受限的传输手段,所以采用PUSH采用WBXML(WAP Binary XML)封装。WBXML用一个字节代替常用的TAG和Attribute,所以能极大的节约传输数据量。

下面是WBXML到XML的解析:




最终解析得到的XML为:



三、带有string table的WBXML

WBXML封装的字符串有inline string和string table两种,这两种字串都以’\0’结束。String table中可以由’\0’结束的多个字符串,stringtable的长度把结束符’\0’计算在内,是所有字串的总长度。

139邮箱的WAP PUSH提醒通知采用了String tables。很多手机终端虽然能收到通常的PUSH消息,但是却接收不到139邮箱的WAP PUSH通知,原因就是不支持带stringtable的WBXML的解析,而忽略了这样的PUSH消息。

下面是带有String table的WAP PUSH SI数据




下面是WBXML到XML的解析:




把String Table中的内容替换,得到最终解析出的XML:



四、小结


本文以WAP PUSH Service Indication为例,讲解WAP PUSH的WSP编码和WBXML编码。并对WBXML的两种string——inline string和string table进行了详细阐述。

参考资料

1. WAP Binary XMLContent Format

WBXML标准,必看!

2. MIUI ROM接收WAP PUSH短信的补丁

Android上的WAP PUSH解析实现,有源代码,但是解析不全。

3. WAP Push over SMS

WAP PUSH over SMS的大致介绍(英文)

4. WAP Push SMS encoding

WAP PUSH Service Indication封装实例(英文)

5. Sending SMS WAP Push messages using the ActiveXperts SMS and MMS Toolkit

发送WAP PUSH的工具。是使用说明,虽然没实现细节,但可参考WBXML的Token和Attribute对照。(英文)

6. android wap push功能实现

反面教材。用固定位置解析,以及固定用000103标识URL结束,固定用000101标识内容结束,简直是胡扯!


关于协议的解析还是要依据标准!用自己遇到的情况可以帮助理解协议,但是据此来做实现的话,只能解析一种情况,被解析内容或格式有少许变化,所做的实现就没用了,到处是BUG。


【修改历史记录】

2012/07/02 对页面布局做了修改

  1. 把PDU数据和编码解析部分放在了CSDN编辑工具“编程语言(其他)”里,这样看起来段落上好多了,不过损失了颜色标注!
  2. 把解析后的XML放在CSDN编辑工具“编程语言(HTML/XML)”里。

分享到:
评论

相关推荐

    wappush.rar_WAPpush_java push_push_wap push_wap push java

    在WAP Push实现中,JavaBean可以用来管理推送消息的格式化、编码和解码,以及与数据库交互以存储和检索待推送的消息。 5. **WAP Push消息格式**: WAP Push消息遵循WSP(WAP Session Protocol)和WTP(WAP Tunnel ...

    WAPpush.zip_WAPpush_java wap_java wap push_push_wap push

    5. **XML编码**:WAP Push消息通常使用WSP上的HTTP POST方法,以XML格式编码,这样可以携带元数据和内容信息。 6. **安全与隐私**:WAP Push服务需要考虑用户隐私和数据安全,例如通过加密传输和验证机制确保信息不...

    wap push 源码

    它可能会封装WAP Push协议的相关逻辑,包括构建推送消息的结构,如WSP(无线会话协议)头和WBXML(无线二进制XML)编码的数据,以及发送这些消息到目标设备的逻辑。 3. **HexDecoder.cs**: 这个文件可能包含了一个...

    wap-230-wsp-20010705-a.rar_WAP WSP_WAP-230-WSP-20010705_wap 230_

    2. **数据编码**:支持多种编码方式,如压缩编码以减少无线网络传输的数据量。 3. **连接管理**:根据网络状况动态调整连接策略,以节省资源并提高效率。 4. **状态管理**:通过状态行和头信息维持会话状态,允许...

    wap-230-wsp-20010705-a.rar_push_wsp

    2. **Push过程**:WSP在WAP Push服务中的角色涉及如何构建Push消息,包括Push标识、消息类型、目标URL以及内容编码等。 3. **安全性**:WSP可能会结合WAP的安全机制,如WTLS(Wireless Transport Layer Security)...

    wap_push.rar_WAP push java_push_wap pu_wap push_wap源码

    2. **连接与发送模块**:这部分代码处理与WAP Gateway的通信,将构建好的Push消息发送出去。可能使用HTTP POST请求或者WAP的PUSH-Initiate方法。 3. **客户端接收模块**:如果源码包含了客户端部分,这部分代码会...

    wap-push.rar_push_wap_wap push

    3. **WAP协议栈**:WAP Push是WAP协议栈的一部分,包括WTP(WAP传输协议)、WSP(WAP会话协议)和WAP网关等组件。 4. **Service Indication**:这是WAP Push的一种实现方式,用于通知用户有新内容可用,例如MMS、...

    wappush.zip_WAPpush_push

    可能还需要处理编码、解码WAP Push消息的协议栈,如WSP(无线会话协议)。 总结来说,"wappush.zip_WAPpush_push"是一个用于构建WAP Push服务的软件模块,包含各种组件,如短信发送、接口定义、消息处理和状态报告...

    Android wappush讲解

    2. **推送代理网关(PPG:PUSH Proxy Gateway)**:作为PI与WAP客户端之间的桥梁,负责协议转换、数据传输等核心功能。 3. **推送客户端(PC:PUSH Client)**:安装在用户的移动设备上,用于接收并处理推送信息。...

    WAP PUSH资料

    - **消息格式验证**:确保发送的Push消息符合WAP Push协议标准,如WSP(Wireless Session Protocol)和WTP(Wireless Transaction Protocol)。 - **网络测试**:检查网络环境对Push服务的影响,如信号质量、延迟和...

    wap push协议权威文档说明(SL)

    ### WAP Push协议权威文档说明知识点解析 #### 一、WAP Push协议概述 WAP Push(Wireless Application Protocol Push)是一种用于无线网络环境中推送消息的技术。它允许服务提供商通过移动网络向移动设备发送简短的...

    WAP-251-PushMessage-20010322-a.rar_push_wap push_wap.251aicom.

    通过阅读“WAP-251-PushMessage-20010322-a.pdf”这个文档,开发者可以深入理解WAP PUSH的技术细节,包括其工作流程、协议规范以及如何实现和优化推送服务。对于希望利用WAP PUSH技术开发应用的人来说,这份文档无疑...

    wap-230-wsp-20010705-a

    - 文件“wap-230-wsp-20010705-a”指的是WSP规范的一个具体版本,即“WAP-230-WSP”,批准版本5,发布日期为2001年7月5日。 - 该版本文档由WAP论坛发布,并且包含了可能的勘误表和更新信息。 ### 版权声明与使用...

    用sms发mms、WAP PUSH等资料

    对于开发人员来说,理解这些技术的工作原理以及如何与之交互是至关重要的,这可能涉及到编程语言如Java、Python或Android SDK的使用,以及对网络协议和数据格式的理解,如WAP-200、WSP(无线会话协议)和WBXML(无线...

    MMS-WAP-PUSH.rar_MMS_MMS WAP PUSH_china mobile mms_china wap pus

    《中国移动MMS与WAP PUSH接口规范解析》 在当今的移动通信领域,MMS(Multimedia Messaging Service,多媒体信息服务)和WAP PUSH(Wireless Application Protocol Push,无线应用协议推送)是两种重要的数据传输...

    WAP-251-PushMessage-20010322-a.rar_WAP pushmessage_wap_wap mess

    在《WAP 251 PushMessage 20010322-a.pdf》文档中,可能会详细探讨上述各方面的技术和实现细节,包括Push消息的编码、传输流程、错误处理、以及与WAP其他组件的交互等内容。此外,"www.pudn.com.txt"可能包含与文档...

    WAP Push SP接口协议

    WAP Push SP接口协议遵循WAP Forum制定的标准,如WAP Push Profile(WSP)和WAP Pushover SMS Profile。这些标准确保不同厂商的产品和服务能够互操作。 7. **应用实例** - **铃声和壁纸**:用户可以自动接收新...

    SimplePCConnect2_java.zip_SimplePCConnec_WAP_Push_Java_simplepcc

    本文将深入解析名为"SimplePCConnect2_java.zip"的压缩包内容,探讨其在手机发送端消息通信模块中的应用,以及涉及到的关键技术——WAP Push。 首先,"SimplePCConnect.dll"是动态链接库文件,通常用于Windows系统...

    WapPushSDK-2.0.rar

    本文将深入探讨WAP PUSH的基本概念、工作原理以及如何利用WapPushSDK-2.0进行开发。 首先,我们需要了解WAP PUSH的定义。WAP PUSH,全称为Wireless Application Protocol (WAP) Push,是一种允许服务器向移动设备...

    电信 isag 接口文档 包含(sms mms wap push)

    文档会解释WAP Push协议(如WSP, WTP, WAP-HTTP)的细节,以及如何通过ISAG将数据包有效地推送给用户设备,包括内容推送的触发机制、安全性和隐私保护措施。 ISAG的接口设计考虑了网络的可扩展性、安全性、可靠性和...

Global site tag (gtag.js) - Google Analytics