2014-10-03 72 views
1

我向原始SOAP请求Office365并尝试获取指定的联系人列表AddressListId我成功获取联系人列表,但它不包括所有我需要的附加信息。一旦我添加了一些附加属性(例如PhoneNumber)到我的请求,服务器返回Invalid shape错误。Exchange Web Services - 在调用“FindPeople”方法时无法获得其他属性

这里是我的要求:

<?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

我使用EWS托管API,所以你将不得不寻找MSDN上的原始SOAP调用,我只能直接搜索了一下:

我也有类似的问题,因为同样的适用为FindAppointments()。询问AppointmentSchema.RequiredAttendees将提高Invalid Shape errorAppointmentSchema.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用多个ItemIDs打电话给原料肥皂GetItem

+0

我不想做两个请求。我们有一个很大的组织,并且需要花费很多时间来遍历每个角色。根据微软文档,这个调用应该是可行的,但它不会,所以我想知道我在做什么错误 – Oleg 2014-10-07 07:57:15

+1

我不了解你,只是最好的猜测,但我没有做错任何事 - 它很显然无法从FindAppointments获取Organizer或RequiredAttendees。但我的猜测是类似的限制也适用于FindPeople。顺便说一句,MS有论坛,您可以在这些深入的问题中得到更好的答案,当他们的官方文档看起来错误或不完整时。 – Alexander 2014-10-07 08:11:32

相关问题