Exchange Web Service(EWS) 协议
EWS是微软实现的一种客户端和服务器之间的交换信息的协议。Exchange Server提供了包括从电子邮件、会议安排、团体日程管理、任务管理、文档管理、实时会议和工作流等丰富的协作应用。
EWS基于标准的web service, 使用HTTP+XML+SOAP来传输消息的。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
- 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
- 可选的 Header 元素,包含头部信息
- 必需的 Body 元素,包含所有的调用和响应信息
- 可选的 Fault 元素所发生错误的信息,提供有关在处理此消息
EWS的SOAP消息,Header中指明使用的EWS版本信息:
<s:Header>
<t:RequestServerVersion s:mustUnderstand="1" Version="Exchange2010_SP1"/>
</s:Header>
Body中是真正的命令信息,指明要调用的接口和使用的参数:
<s:Body>
<m:GetFolder>
<m:FolderShape>
<t:BaseShape>IdOnly</t:BaseShape>
<t:AdditionalProperties>
<t:FieldURI FieldURI="folder:DistinguishedFolderId"/>
</t:AdditionalProperties>
</m:FolderShape>
<m:FolderIds>
<t:DistinguishedFolderId Id="deleteditems"/>
</m:FolderIds>
</m:GetFolder>
</s:Body>
当请求成功是,响应的内容也是放在Body当中:
<s:Body>
<m:GetFolderResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:GetFolderResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:Folders>
<t:Folder>
<t:FolderId Id="AQMkADAwATMwMAItZDAyNi05ODYxLTAwAi0wMAoALgAAA428HhUZWjFJpUSRJeFqnBwBAHQq8eP3dM1JkMChdMfyLSgAAAIBCgAAAA==" ChangeKey="AQAAABYAAAB0KvHj93TNSZDAoXTH8i0oAAB17L8t" />
</t:Folder>
</m:Folders>
</m:GetFolderResponseMessage>
</m:ResponseMessages>
</m:GetFolderResponse>
</s:Body>
EWS有多个实现版本,每个版本支持的请求都描述在以下三个文件中:
- services.wsdl : 定义了客户端和服务器之间支持的消息协议
- Messages.xds: 定义了SOAP消息请求和响应的信息类型
- Types.xds:定义了SOAP消息使用的数据类型
要访问EWS服务器, 可以用这三个文件自动生成soap访问接口,但是生成的接口可