EWS无法使用XML更新Exchange联系人电话号码

问题描述 投票:0回答:1

我想使用带有XML的Exchange Web Services SOAP API更新我的交换联系人。我已经(煞费苦心地)想出如何更新除电话号码以外的所有我想要的属性。

我遵循用于更新EmailAddresses的模式(因为它们都是索引字段)。以下是我的XML请求示例:

<t:SetItemField>
  <t:IndexedFieldURI FieldURI="contacts:PhoneNumber" FieldIndex="BusinessPhone"/>
    <Contact xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
    <PhoneNumbers>
      <Entry key="BusinessPhone">888-777-6666</Entry>
    </PhoneNumbers>
  </Contact>
</t:SetItemField>

这是我从Exchange收到的错误消息:

发生内部服务器错误。操作失败。,找不到类型为“Microsoft.Exchange.Services.Core.Types.ContactItemType”的键'PhoneNumbers'

看到这个操作的XML基本上没有文档,我怀疑我是不正确格式化PhoneNumber的XML。

对于使用EWS Managed API 2.0的任何人,您是否可以执行此操作并跟踪XML输出,以便我可以看到它是如何正确完成的?

任何其他导致解决方案的信息都非常感谢!

谢谢

xml exchangewebservices
1个回答
1
投票

看到这个操作的XML基本上没有文档,我怀疑我是不正确格式化PhoneNumber的XML。

有关MSDN https://msdn.microsoft.com/en-us/library/office/aa580675(v=exchg.150).aspx上所有XML元素的完整文档,协议文档也有相当全面的覆盖范围https://msdn.microsoft.com/en-us/library/cc425499(v=exchg.80).aspx

根据您的要求,我可以重现您需要修复的错误,您需要做的就是按键大写K,例如

<Entry key="BusinessPhone">888-777-6666</Entry>  

<Entry Key="BusinessPhone">888-777-6666</Entry>

SOAP(或至少它在EWS中实现的方式)特别围绕元素的情况和顺序。这是修改后的SOAP,对我有用

  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
      <t:RequestServerVersion Version="Exchange2013_SP1" />
    </soap:Header>
    <soap:Body>
      <m:UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AlwaysOverwrite">
        <m:ItemChanges>
          <t:ItemChange>
            <t:ItemId Id="A...A=" ChangeKey="EQA....Z" />
            <t:Updates>
            <t:SetItemField>
               <t:IndexedFieldURI FieldURI="contacts:PhoneNumber" FieldIndex="BusinessPhone"/>
              <Contact xmlns="http://schemas.microsoft.com/exchange/services/2006/types">
              <PhoneNumbers>
                <Entry Key="BusinessPhone">888-777-6666</Entry>
              </PhoneNumbers>
             </Contact>
            </t:SetItemField>
            </t:Updates>
          </t:ItemChange>
        </m:ItemChanges>
      </m:UpdateItem>
    </soap:Body>
  </soap:Envelope>
© www.soinside.com 2019 - 2024. All rights reserved.