Subscribe 操作
订阅操作用于将客户端应用程序订阅到推送或拉取通知。 请务必注意,请求消息和响应的结构因事件通知的类型而异。
拉取订阅订阅请求示例
说明
下面的代码示例演示如何订阅拉取事件通知订阅。 如果新邮件已添加到收件箱,以及是否从收件箱中删除了某个项目,订阅会通知客户端应用程序。 如果客户端在十分钟内未请求有关事件的信息,订阅将超时。 如果订阅过期,必须建立一个新订阅才能继续请求通知。
代码
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Body>
<Subscribe xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<PullSubscriptionRequest>
<t:FolderIds>
<t:DistinguishedFolderId Id="inbox"/>
</t:FolderIds>
<t:EventTypes>
<t:EventType>NewMailEvent</t:EventType>
<t:EventType>DeletedEvent</t:EventType>
</t:EventTypes>
<t:Timeout>10</t:Timeout>
</PullSubscriptionRequest>
</Subscribe>
</soap:Body>
</soap:Envelope>
拉取订阅订阅请求元素
请求中使用以下元素:
若要查找订阅操作的请求消息的其他选项,请浏览架构层次结构。 从 PullSubscriptionRequest 元素开始。
成功的请求订阅订阅响应示例
说明
以下示例显示了成功的请求订阅响应。 响应包含订阅标识符和水印,用于获取与订阅关联的事件数组。 订阅标识符还用于取消订阅客户端。
代码
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<t:ServerVersionInfo MajorVersion="8" MinorVersion="0" MajorBuildNumber="628" MinorBuildNumber="0"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" />
</soap:Header>
<soap:Body>
<SubscribeResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<m:ResponseMessages>
<m:SubscribeResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:SubscriptionId>39ea5d0f-f062-455e-a1e9-89c0304390f4</m:SubscriptionId>
<m:Watermark>AAAAAHgGAAAAAAAAAQ==</m:Watermark>
</m:SubscribeResponseMessage>
</m:ResponseMessages>
</SubscribeResponse>
</soap:Body>
</soap:Envelope>
拉取订阅订阅响应元素
响应中使用以下元素:
请求订阅订阅错误响应示例
说明
以下示例显示了对订阅请求的错误响应。 此错误是由尝试使用委托访问订阅通知引起的。
代码
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<t:ServerVersionInfo MajorVersion="8" MinorVersion="0" MajorBuildNumber="685" MinorBuildNumber="8"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" />
</soap:Header>
<soap:Body>
<SubscribeResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<m:ResponseMessages>
<m:SubscribeResponseMessage ResponseClass="Error">
<m:MessageText>Subscriptions are not supported for delegate user access.</m:MessageText>
<m:ResponseCode>ErrorSubscriptionDelegateAccessNotSupported</m:ResponseCode>
<m:DescriptiveLinkKey>0</m:DescriptiveLinkKey>
</m:SubscribeResponseMessage>
</m:ResponseMessages>
</SubscribeResponse>
</soap:Body>
</soap:Envelope>
拉取订阅错误响应元素
错误响应中使用以下元素:
推送订阅请求示例
说明
下面的代码示例演示如何订阅推送事件通知订阅。 请求标识要监视的文件夹、要监视的事件类型、状态通知的频率,以及侦听推送通知的客户端 Web 服务的 URL。
代码
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<soap:Body>
<Subscribe xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PushSubscriptionRequest xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<FolderIds xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<DistinguishedFolderId Id="inbox" />
</FolderIds>
<EventTypes xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
<EventType>NewMailEvent</EventType>
<EventType>CopiedEvent</EventType>
<EventType>CreatedEvent</EventType>
<EventType>DeletedEvent</EventType>
<EventType>ModifiedEvent</EventType>
<EventType>MovedEvent</EventType>
</EventTypes>
<StatusFrequency xmlns="http://schemas.microsoft.com/exchange/services/2006/types">1</StatusFrequency>
<URL xmlns="http://schemas.microsoft.com/exchange/services/2006/types">http://clientWebService/Service.asmx</URL>
</PushSubscriptionRequest>
</Subscribe>
</soap:Body>
</soap:Envelope>
Comments
在发送推送通知订阅请求之前,必须设置客户端 Web 服务;否则,第一个通知不会发送到有效的终结点,推送通知将失败。 有关详细信息,请参阅 推送通知示例应用程序。
重新订阅时,将创建一个新的 SubscriptionId (GetEvents) 。 使用上一个订阅的水印在上一个订阅结束时重新订阅。
推送订阅请求元素
请求中使用以下元素:
成功的推送订阅响应示例
说明
以下示例显示了成功的推送订阅响应。
代码
<?xml version="1.0" encoding="utf-8" ?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<t:ServerVersionInfo MajorVersion="8" MinorVersion="0" MajorBuildNumber="628" MinorBuildNumber="0"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" />
</soap:Header>
<soap:Body>
<SubscribeResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">
<ResponseMessages>
<SubscribeResponseMessage ResponseClass="Success">
<ResponseCode>NoError</ResponseCode>
<SubscriptionId>83826921-afdf-48be-b469-628cc02b5f49</SubscriptionId>
<Watermark>AQAAAOpvG0LURVdOhQkPOWZLPcI8EgAAAAAAAAE=</Watermark>
</SubscribeResponseMessage>
</ResponseMessages>
</SubscribeResponse>
</soap:Body>
</soap:Envelope>
推送订阅响应元素
响应中使用以下元素: