我正在尝试构建一个简单的Exchange ActiveSync客户端。
我正在使用一个简单的Python脚本发送初始同步电子邮件命令,同时连接到Exchange 2010 SP1。
在请求体中,我发送以下XML编码为WBXML(使用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>
我在官方文档中找不到任何关于这个状态码的文档。我怎么才能算出来呢?
Sync
状态码4
表示客户端协议错误。在这个MSDN页面上有文档。
正确的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协议要求先设置Provision
和FolderSync
。你不能直接跳到Sync
。这里描述了基本协议序列。