SyncML底层通讯
2.1 绑定Http
2.1.1 Tcp 传输服务
Http 通信一般是在 Tcp 连接之上的,这个绑定不是必需的,如果 Http 基于其它的协议,那么需求也和下面 Tcp 定义的相似2.1.1 .1 连接
在 Http 客户端连接到 Http 服务器端的时候, SyncML 客户端建立一个 Tcp 连接在客户和服务器之间通过使用 Tcp open 操作,在超时的情况下还需要 SyncML 客户端从新建立连接。
2.1.1.2 连接选项
关于端口和协议版本的一些选项。
2.1.1.3 断开连接
当连接不需要的时候, SyncML 客户端负责使用 tcp close 操作结束连接。如果固定连接存在于 Http 请求中, Http 连接的关闭有 Http 客户端来完成,当 Http 客户端接收到来自服务器的 Http 应答中指明这是最后一个 SyncML 的包。
2.1.1.4 终止
有时候非正常时间发生会要求应用程序中断 Tcp 连接,这种情况下, Tcp 从新初始化来结束当前连接。
2.1.1.5 超时
当服务器超时, SyncML 客户端需要重建一个新的 HTTP 会话并且 Http 服务器端会尝试从新发送当前的 SyncML 包
2.1.2. SyncML 信息交换
一旦 Http 连接建立,一个或者多个 SyncML 消息会通过连接由 SyncML 客户端传输,它们存在于 Http 客户端的请求或者 Http 服务器端的应答中。
在 Http 请求中 POST 方法用来传递 SyncML 消息。
2.1.2.1 每包一个消息
下面是 Http 请求的部分代码:
POST ./servlet/syncit HTTP/1.1
Host: www.datasync.org
Content-Type: application/vnd.syncml-xml; charset="utf-8"
Content0Length: 1023
Accept: application/vnd.syncml-xml
下面是 Http 应答的部分代码:
HTTP/1.1 200 ok
Content-Type: application/vnd.syncml-wbxml; charset="utf-8"
Content-LengthL 1023
--HTTP body---
2.1.2.2 一个包里包含多个消息
每一个 Sync 消息必须使用 SyncML MIME 媒体类型在 HTTP 请求或应答中传递,当每个包里有多个 SyncML 消息的时候,每一个消息是否在分离的 HTTP 请求或应答传递依赖于它是否是 SyncML 的请求和应答。可以根据每一个 SyncML 消息是否有最后一个元素来判断这个包中是否有更多的 SyncML 消息,如够有最后一个元素,那么这消息就是该包中最后一个消息。
2.1.3 传输命令
HTTP 使用一系列的命令,包括传输方法,头部信息,请求的头部信息,应答的头部信息
2.1.3.1 传输方法
SyncML 客户端必须使用 POST 方法或者可以使用 CONNECT 方法 ( 如果支持的话 ) 来给 SyncML 服务器发送 SyncML 请求。 CONNECT 方法用来初始化 SSL 会话以验证 HTTP 客户和服务器,其他的方法目前没有用在 SyncML 客户端。
2.2 绑定 Obex
2.3 绑定 Wsp