Тестирование Microsoft EWS (веб-службы Exchange) с использованием почтальона - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь проверить EWS с почтальоном. Я попытался получить WSDL из https://outlook.office365.com/EWS/Exchange.asmx, но WSDL, возвращенный по ссылке, выдает ошибку «не найдено».

Затем, после разговоров здесь, https://social.msdn.microsoft.com/Forums/lync/en-US/07a01fbe-ef5e-4b9c-b1a2-be0945d4b621/how-to-get-serviceswsdl-for-office-365?forum=exchangesvrdevelopment.

Мне удалось получить WDSL от https://outlook.office365.com/ews/services.wsdl после базового c auth.

Для выполнения SOAP вызова

  1. Я попытался отправить запрос POST на https://outlook.office365.com/ews/services.wsdl, в результате метод HTTP 405 не Разрешено.
  2. Я попытался отправить запрос POST на https://outlook.office365.com/EWS/Exchange.asmx, который вернул следующий ответ.
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Header>
        <Action s:mustUnderstand="1" xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">*</Action>
    </s:Header>
    <s:Body>
        <s:Fault>
            <faultcode xmlns:a="http://schemas.microsoft.com/exchange/services/2006/types">a:ErrorInvalidRequest</faultcode>
            <faultstring xml:lang="en-US">The request is invalid.</faultstring>
            <detail>
                <e:ResponseCode xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">ErrorInvalidRequest</e:ResponseCode>
                <e:Message xmlns:e="http://schemas.microsoft.com/exchange/services/2006/errors">The request is invalid.</e:Message>
            </detail>
        </s:Fault>
    </s:Body>
</s:Envelope>

Мой XML POST-контент например это

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types"
               xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages">
   <soap:Header>
      <t:RequestServerVersion Version="Exchange2006" />
   </soap:Header>
   <soap:Body >
      <m:FindPeople>
         <m:IndexedPageItemView BasePoint="Beginning" MaxEntriesReturned="100" Offset="0"/>
         <m:ParentFolderId>
            <t:DistinguishedFolderId Id="contacts"/>
         </m:ParentFolderId>
      </m:FindPeople>
   </soap:Body>
</soap:Envelope>

Я пытаюсь выполнить запрос SOAP (https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/findpeople-operation). Я что-то упустил?

1 Ответ

1 голос
/ 27 февраля 2020

В вашем сообщении есть несколько ошибок

 <t:RequestServerVersion Version="Exchange2006" />

Это неверно, нет Exchange2006, может быть, вы имели в виду

 <t:RequestServerVersion Version="Exchange2016" />

Вы также изменили пространства имен с http на https, что вам не следует не трогайте (это не значит, что он будет использовать http (или https), это всего лишь объявления пространства имен, и ваше изменение только что сделало ваш запрос недействительным)

например, рабочий запрос будет выглядеть как

<?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" 
xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages">
  <soap:Header>
    <t:RequestServerVersion Version="Exchange2016" />
  </soap:Header>
   <soap:Body >
      <m:FindPeople>
         <m:IndexedPageItemView BasePoint="Beginning" MaxEntriesReturned="100" Offset="0"/>
         <m:ParentFolderId>
            <t:DistinguishedFolderId Id="contacts"/>
         </m:ParentFolderId>
      </m:FindPeople>
   </soap:Body>
</soap:Envelope>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...