2

Sharepoint Query Web Service を使用しようとすると、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 は確かに形式が正しくありません。おそらく、解析しているものは何であれ、2 つの開始タグまたは終了タグの間に引用符があり、これは違法です。

次の 2 つの方法を試すことができます。

  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 に答える