Сообщение ActiveSync Sync не поддерживает все свойства

Я реализую Java-клиент ActiveSync. Я уже могу связываться с сервером и выполнять последовательность протокола для синхронизации электронной почты, как определено в документация.

Однако, когда я пытаюсь отправить команду 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

person Kevin Colgan    schedule 04.06.2012    source источник
comment
ОБНОВЛЕНИЕ: я смог использовать прокси-сервер для перехвата сообщений, передаваемых из почтового клиента эмулятора Android, и кажется, что он может успешно использовать свойства, которые не работают в моем Java-клиенте. Я пытался точно воспроизвести HTTP-сообщения, отправленные с Android, в моем Java-клиенте, но я всегда получаю сообщение о статусе 4 от Exchange. Кто-нибудь может помочь?   -  person Kevin Colgan    schedule 07.06.2012


Ответы (1)


Оказывается, кодировщик/декодер WBXML, который я использовал, работал неправильно. Я понял это, сравнив байт-код, сгенерированный двумя разными кодировщиками WBXML, и увидел разницу. Кодировщик, который я использовал, не обрабатывал пустые элементы должным образом. Я исправил это, и теперь сервер работает как положено.

person Kevin Colgan    schedule 18.06.2012