2012-06-04 1 views
0

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

Однако, когда я пытаюсь отправить команду Sync, кажется, что я могу использовать только подмножество доступных команд в спецификации. Когда я использую определенные теги свойств в XML-сообщении Sync, я получаю код состояния 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

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

ответ

0

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