【问题标题】:EWS Cannot Update Exchange Contact Phone Numbers with XMLEWS 无法使用 XML 更新 Exchange 联系电话号码
【发布时间】:2018-03-05 06:57:02
【问题描述】:

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

我遵循用于更新电子邮件地址的模式(因为它们都是索引字段)。这是我的 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 收到的错误消息:

发生内部服务器错误。操作失败。, Key 找不到类型的“电话号码” 'Microsoft.Exchange.Services.Core.Types.ContactItemType'

鉴于此操作的 XML 基本上没有记录,我怀疑我错误地格式化了 PhoneNumber 的 XML。

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

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

谢谢

【问题讨论】:

    标签: xml exchangewebservices


    【解决方案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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-24
      • 1970-01-01
      • 2018-01-26
      • 2013-02-03
      • 1970-01-01
      • 2012-11-08
      相关资源
      最近更新 更多