0

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

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

1 回答 1

0

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

于 2012-06-18T12:11:52.697 回答