Exchange Web服务 - 在调用" FindPeople"时无法获得其他属性。方法

时间:2014-10-03 18:20:08

标签: web-services soap exchangewebservices office365

我正在向Office365提出原始SOAP请求并尝试获取指定AddressListId的联系人列表,但我成功获取了联系人列表,但它不包含我需要的所有其他信息。一旦我向我的请求添加了一些其他属性(例如PhoneNumber),服务器就会返回Invalid shape错误。

这是我的要求:

<?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="Exchange2013" />
   </soap:Header>
   <soap:Body >
    <m:FindPeople>
      <m:PersonaShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="persona:DisplayName"/>
          <t:FieldURI FieldURI="persona:PhoneNumber"/>
        </t:AdditionalProperties>
      </m:PersonaShape>
      <m:IndexedPageItemView BasePoint="Beginning" MaxEntriesReturned="100" Offset="0"/>
      <m:ParentFolderId>
        <t:AddressListId Id="###-####-####-####"/>
      </m:ParentFolderId>
    </m:FindPeople>
  </soap:Body>
</soap:Envelope>

如何获取每个角色的所有其他信息?

1 个答案:

答案 0 :(得分:1)

我正在使用EWS托管API,因此您必须在MSDN上搜索原始SOAP调用,我只能指导您的搜索:

我遇到了类似的问题,因为这同样适用于FindAppointments()。在使用AppointmentSchema.RequiredAttendees后,要求Invalid Shape error会提升AppointmentSchema.Organizer,而FindAppointments()将不会包含电子邮件地址,只会包含组织者的名称。

解决方案是向Exchange Server发出两个请求。

var appointments = calendarFolder.FindAppointments(BasePropertySet.FirstClassProperties);
exchangeService.LoadPropertiesForItems(appointments, MyAdvancedProperties);

认为 FindPeople()可以使用相同的“解决方法”,以及每个其他Find%Itemtype%() EWS可能支持,但我不确定。

编辑:我刚刚找到http://social.technet.microsoft.com/Forums/exchange/en-US/e83abfb1-37a8-48fe-9579-4e120fb77746/ews-managed-api-loadpropertiesforitems-returns-unexpected-end-of-xml-document?forum=exchangesvrdevelopment,其中LoadPropertiesForItems调用带有多个ItemID的原始肥皂GetItem