我花了几天的时间反复试验,查看了交换日志,并在整个互联网上进行了搜索,但到目前为止我无法解决这个问题。
我正在我的 iOS 应用程序中实现 ActiveSync 功能,到目前为止,我已经成功地编写了自动发现过程和 HTTP OPTIONS 请求以获取服务器的功能。我现在正在尝试运行 Provision 命令,但不断收到 400 Bad Request。
这是我发送到服务器的内容:
URL: https://mobile.[myexchangeserver].com/Microsoft-Server-ActiveSync?Cmd=Provision&User=jack&DeviceID=123412341234&DeviceType=iOS
Authorization = "Basic wekrju283j"; //Base 64 encoded auth, garbage for this posting
"Content-Length" = 104;
"Content-Type" = "application/vnd.ms-sync.wbxml";
"MS-ASProtocolVersion" = "12.1";
"User-Agent" = MyApp;
"X-MS-PolicyKey" = 0;
Body (converted to WBXML before sending):
<?xml version="1.0" encoding="utf-8"?>
<Provision xmlns="Provision:">
<Policies>
<Policy>
<PolicyType>MS-EAS-Provisioning-WBXML</PolicyType>
</Policy>
</Policies>
</Provision>
WBXML: 02 00 25 6A 41 50 72 6F 76 69 73 69 6F 6E 00 50 6F 6C 69 63 69 65 73 00 50 6F 6C 69 63 79 00 50 6F 6C 69 63 79 54 79 70 65 00 2D 2F 2F 41 49 52 53 59 4E 43 2F 2F 44 54 44 20 41 69 72 53 79 6E 63 2F 2F 45 4E 00 44 00 44 0A 44 13 44 1A 03 4D 53 2D 45 41 53 2D 00 83 00 03 69 6E 67 2D 57 42 58 4D 4C 00 01 01 01 01
无论如何,我能找到的不仅仅是“错误请求”吗?或者有人看到我发送的内容有什么问题吗?服务器支持12.1协议(来自OPTIONS请求)
我一遍又一遍地阅读协议文档,但仍然找不到我正在做的任何问题。我知道我可以对参数进行 base64 编码,但根据协议文档是可选的。我也知道在 14.1 中我需要在 xml 中发送更多信息,因此我使用 12.1 协议。
任何帮助是极大的赞赏。