动态同步消息不支持所有属性



我正在实现一个ActiveSync Java客户端。我已经可以与服务器通信并执行协议序列以同步电子邮件,如文档中所定义。

但是,当我尝试发送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

事实证明,我使用的WBXML编码/解码器无法正常工作。我通过比较两个不同的WBXML编码器生成的字节码来解决这个问题,并看到了差异。我使用的编码器没有正确处理空元素。我修复了它,现在服务器按预期运行。

最新更新