我正在实现一个ActiveSync Java客户端。我已经可以与服务器通信并执行协议序列以同步电子邮件,如documentation中所定义。
但是,当我尝试发送Sync
命令时,我似乎只能使用规范中可用命令的子集。当我在Sync XML消息中使用某些属性标记时,我收到状态4('协议错误')代码,即使这些代码应该根据规范有效。
当我只使用GetChanges
属性时,我会得到一个正确的响应,但是我希望能够指定要返回的项目数等。
我已经包含了我正在发送的XML代码段:注释掉的行是尝试过的行,但却导致了状态4。
<?xml version="1.0" ?>
<Sync xmlns="AirSync:">
<Collections>
<Collection>
<Class>Email</Class>
<SyncKey>{23423972324}</SyncKey>
<CollectionId>{23423sdfsdfsdfsf972324}</CollectionId>
<GetChanges/>
<!--<GetChanges>0</GetChanges>-->
<!--<WindowSize>512</WindowSize>-->
<!--<Options>-->
<!--<Class>Email</Class>-->
<!--<FilterType>3</FilterType>-->
<!--<MaxItems>10</MaxItems>-->
<!--</Options>-->
<!--<Commands>-->
<!-- <Fetch>-->
<!-- <ServerId>1:323</ServerId>-->
<!-- </Fetch>-->
<!--</Commands>-->
</Collection>
</Collections>
<!--<WindowSize>512</WindowSize>-->
</Sync>
是否有任何理由不支持这些属性?或者是否有一些我遗漏的消息?
服务器的GetOptions
命令返回以下内容(截断):
Server: Microsoft-IIS/6.0,
X-Powered-By: ASP.NET,
Pragma: no-cache,
Public: OPTIONS, POST, Allow: OPTIONS, POST,
MS-Server-ActiveSync: 6.5.7653.19,
MS-ASProtocolVersions: 1.0,2.0,2.1,2.5,
MS-ASProtocolCommands:Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,ResolveRecipients,ValidateCert,Provision,Search,Notify,Ping
答案 0 :(得分:0)
事实证明我使用的WBXML编码/解码器无法正常工作。我通过比较两个不同WBXML编码器生成的字节代码来解决这个问题并看到了不同之处。我正在使用的编码器没有正确处理空元素。我修复了它,现在服务器按预期运行。