Операции Subscribe
Операция Подписки используется для подписки клиентских приложений на push-уведомления или уведомления по запросу. Важно помнить, что структура сообщений запросов и ответов отличается в зависимости от типа уведомления о событии.
Пример запроса подписки на подписку на вытягивание
Описание
В следующем примере кода показано, как подписаться на подписку на уведомление о событиях по запросу. Подписка информирует клиентское приложение о добавлении новой почты в папку "Входящие" и удалении элемента из папки "Входящие". Истекает время ожидания подписки, если клиент не запрашивает сведения о событиях в течение десяти минут. Если срок действия подписки истек, необходимо установить новую подписку, чтобы продолжать запрашивать уведомления.
Код
<?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>
Элементы ответа об ошибке подписки по запросу
В ответе на ошибку используются следующие элементы:
Пример запроса принудительной подписки
Описание
В следующем примере кода показано, как подписаться на подписку на уведомления о push-событиях. Запрос определяет папки для мониторинга, типы отслеживаемых событий, частоту уведомлений о состоянии и URL-адрес клиентской веб-службы, которая прослушивает push-уведомления.
Код
<?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
Клиентская веб-служба должна быть настроена до отправки запроса на подписку на push-уведомление; В противном случае первое уведомление не будет отправлено в действительную конечную точку, и push-уведомление завершится ошибкой. Дополнительные сведения см. в разделе Пример приложения push-уведомлений.
При повторной подписке создается новый Идентификатор подписки (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>
Элементы ответа принудительной подписки
В ответе используются следующие элементы: