我正在向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>
如何获取每个角色的所有其他信息?
答案 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
。