2

我在尝试使用 Sharepoint 查询 Web 服务时收到 400 HTTP 错误。我的理由是,这主要是由于格式错误的 XML,我无法理解为什么:

这是 SOAP 请求正文,任何人都可以认为这有什么问题吗?

<?xml version="1.0" ?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <Query xmlns="urn:Microsoft.Search">
      <queryXml>"
        <QueryPacket xmlns='urn:Microsoft.Search.Query' Revision='1000'>
          <Query>
            <Context>
              <QueryText language='en-US' type='STRING'>
                Word
              </QueryText>
            </Context>
          </Query>
        </QueryPacket>"
      </queryXml>
    </Query>
  </S:Body>
</S:Envelope>
4

1 回答 1

4

XML 确实格式不正确,可能是因为无论在解析它的任何内容都在两个开始或结束标记之间看到引号,这是非法的。

您可以尝试两种方法:

  1. <queryXml>用 CDATA 标签包装内容:

    <queryXml><![CDATA[<QueryPacket>...</QueryPacket>]]></queryXml>
    

    请注意,这里没有引用;如果你真的需要它们,你可以把它们放回去(虽然我不确定有什么目的):

    <queryXml><![CDATA["<QueryPacket>...</QueryPacket>"]]></queryXml>
    
  2. 对内容进行编码,使其不被视为 XML:

    <queryXml>&lt;QueryPacket&gt;...&lt;/QueryPacket&gt;</queryXml>
    

    有几种方法可以完成编码。我将把它作为练习留给您,因为我不知道您是如何构建 SOAP 请求的。

于 2012-09-12T22:32:22.437 回答