同步时未记录Exchange ActiveSync状态

时间:2011-08-11 04:23:56

标签: python exchange-server activesync wbxml

我正在尝试构建一个简单的Exchange ActiveSync客户端。

我正在使用一个简单的Python脚本,该脚本在连接到Exchange 2010 SP1时发送初始同步电子邮件命令。

在请求正文中,我发送以下编码为WBXML的XML(使用pywbxml):

<?xml version="1.0"?>
<!DOCTYPE AirSync PUBLIC "-//AIRSYNC//DTD AirSync//EN" "http://www.microsoft.com/">
<Sync>
  <Collections>
    <Collection>
      <Class>Email</Class>
      <SyncKey>0</SyncKey>
      <CollectionId>5</CollectionId>
    </Collection>
  </Collections>
</Sync>

服务器以200 OK回答,但返回Status code: 4

<?xml version="1.0"?>
<!DOCTYPE AirSync PUBLIC "-//AIRSYNC//DTD AirSync//EN" "http://www.microsoft.com/">
<Sync>
  <Status>4</Status>
</Sync>

我在官方文档中找不到有关此状态代码的任何文档。我怎么能搞清楚这一点?

1 个答案:

答案 0 :(得分:0)

Sync状态代码值4表示客户端协议错误。它记录在this MSDN page

正确的Sync命令看起来更像是以下内容,假设Inbox的ID为5(从WBXML转换为可读的XML):

<?xml version='1.0' ?>
<Sync>
  <Collections>
    <Collection>
      <SyncKey>0</SyncKey>
      <CollectionId>5</CollectionId>
      <Options>
        <FilterType>5</FilterType>
        <BodyPreference>
          <Type>1</Type>
          <TruncationSize>32768</TruncationSize>
        </BodyPreference>
      </Options>
    </Collection>
  </Collections>
</Sync>

然而,EAS协议首先要求您ProvisionFolderSync。你不能直接跳到Sync。基本协议序列描述为here