Кто-нибудь знает, как реагировать на уведомления EWS (Exchange Web Services) с помощью PHP.
Я инициировал подписку на EWS Push, но не могу отправить правильный SOAP-ответ (чтобы сохранить подписку в сети), когда EWS отправляет мою службу уведомление SOAP.
Взятый с этой страницы, у меня создалось впечатление, что мой ответ SOAP должен быть следующим:
<s:Envelope xmlns:s= "http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <SendNotificationResult xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"> <SubscriptionStatus>OK</SubscriptionStatus> </SendNotificationResult> </s:Body> </s:Envelope>
Однако EWS, похоже, не принимает мой ответ как действительный.
Я пробовал следующие 2 фрагмента кода без везения:
Ответ с использованием строки SOAP с заголовком Content-Type
header( 'Content-Type: text/xml; charset=utf-8' ); echo '<?xml version="1.0" encoding="utf-8"?>'. '<s:Envelope xmlns:s= "http://schemas.xmlsoap.org/soap/envelope/">'. '<s:Body>'. '<SendNotificationResult xmlns="http://schemas.microsoft.com/exchange/services/2006/messages">'. '<SubscriptionStatus>OK</SubscriptionStatus>'. '</SendNotificationResult>'. '</s:Body>'. '</s:Envelope>';
ИЛИ Ответить с помощью службы SOAP
class ewsService { public function SendNotification( $arg ) { $result = new EWSType_SendNotificationResultType(); $result->SubscriptionStatus = 'OK'; return $result; } } $server = new SoapServer( null, array( 'uri' => $_SERVER['REQUEST_SCHEME'].'://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'], )); $server->setObject( new ewsService() ); $server->handle();
Это может помочь узнать, что классы, которые я использую в своем коде, поступают из библиотеки PHP-EWS .
Любая помощь будет принята с благодарностью.
Я также разместил здесь более конкретный вопрос, но у меня не было ответов, так что я бы спросил, действительно ли кто-то получил эту работу, используя любой метод.