Activesync 协议集成

Activesync Protocol integration

我正在 iOS 应用程序上实施 AES 协议。我正在执行文件夹同步命令,我得到 200 个响应代码和 341 个数据长度。当我尝试转换 NSString 中的数据时,它显示无意义的数据。到目前为止,我假设我必须获得我可以解析的 WBXML 数据。以下是我的 post 请求。

POST : Microsoft-Server-ActiveSync?Cmd=FolderSync&User=username&DeviceId=121213123&DeviceType=iOS

[request setValue:[NSString stringWithFormat:@"Basic %@",base64String] forHTTPHeaderField:@"Authorization"];
    [request setValue:@"iPhone" forHTTPHeaderField:@"DeviceType"];
    [request setValue:@"application/vnd.ms-sync.wbxml" forHTTPHeaderField:@"Content-Type"];
    [request setValue:msgLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"14.0" forHTTPHeaderField:@"MS-ASProtocolVersion"];
    [request setValue:@"*/*" forHTTPHeaderField:@"Accept"];
    [request setValue:@"en-us" forHTTPHeaderField:@"Accept-Language"];
    [request setValue:nil forHTTPHeaderField:@"X-MS-PolicyKey"];

这是我的文件夹同步命令。

<?xml version="1.0" encoding="utf-8"?>    
<FolderSync xmlns="FolderHierarchy:">    
<SyncKey> 0 </SyncKey>    
</FolderSync>

这是响应的十六进制数据。

<03016a00 0007564c 03310001 52033100 014e5703 31310001 4f480331 00014903 30000147 0343616c 656e6461 7200014a 03380001 014f4803 32000149 03300001 4703436f 6e746163 74730001 4a033900 01014f48 03330001 49033000 01470344 656c6574 65642049 74656d73 00014a03 34000101 4f480334 00014903 30000147 03447261 66747300 014a0333 0001014f 48033500 01490330 00014703 496e626f 7800014a 03320001 014f4803 36000149 03300001 47034a6f 75726e61 6c00014a 03313100 01014f48 03370001 49033000 0147034a 756e6b20 456d6169 6c00014a 03313200 01014f48 03380001 49033000 0147034e 6f746573 00014a03 31300001 014f4803 39000149 03300001 47034f75 74626f78 00014a03 36000101 4f480331 30000149 03300001 47035365 6e742049 74656d73 00014a03 35000101 4f480331 31000149 03300001 47035461 736b7300 014a0337 00010101 01>

我正在查看此回复,它是二进制数据(不是 XML 格式),似乎是某种结构化格式,其中包含似乎是电子邮件文件夹名称的内容:

如果这真的是您收到的回复,那么问题是这对您来说是否有意义(我使用过很多文件格式,这对我来说并不熟悉)。根据您对 WBXML 是一种 ActiveSync 交换格式的描述,我想这看起来是合理的。我只是不熟悉它的解析。

最后我使用了 https://github.com/jasenhuang/ASWBXml-c 的库解决了我的问题。 :)