2012-09-12 7 views
2

Sharepoint Query Web Service를 사용하는 동안 400 HTTP 오류가 발생합니다. 내 근거는 이것이 주로 잘못된 XML로 인한 것인데 이유는 무엇입니까?400 Sharepoint 웹 서비스를 사용하여 잘못된 오류가 발생했습니다.

이것은 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> 
+1

는'는 " ..."'는 무효이다. 나는'queryXml' 노드의 값이 텍스트 여야한다고 가정하고 있습니까? 그 값 주위에 CDATA 래퍼가 필요하거나 인코딩해야합니다. –

+0

그것은 문자열로되어 있지만 문자열은 XML입니다. 이것은 다음에서 참조 할 수 있습니다. http://msdn.microsoft.com/en-us/library/ms573544.aspx 조금 더 자세히 설명해 주시겠습니까? CDATA 래퍼에 대한 추가 설명이 필요하십니까? – user1020069

답변

4

XML은, 정말로 잘못되었습니다 불법 인 태그를 시작하거나 종료 둘 사이에 견적을보고있다 구문 분석 아마 어떤 때문이다.

두 가지 방법이 시도 할 수 있습니다

  1. 랩 CDATA 태그와 <queryXml> 내용 : 인용문은 여기에 간 것을

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

    공지 사항; (내가 거기에 목적이 어떻게 될지 모르겠어요하지만) 당신이 정말로 필요할 경우 다시 넣어 수 있습니다

    <queryXml><![CDATA["<QueryPacket>...</QueryPacket>"]]></queryXml> 
    
  2. 인코딩의 내용을이 XML로 처리하지 그래서 :이

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

    인코딩을 수행하는 여러 가지 방법이 있습니다. SOAP 요청을 작성하는 방법을 알지 못하기 때문에이를 연습 문제로 남겨 두겠습니다. 도시 된 바와 같이

+0

감사합니다, 왜 CDATA가 필요하며, 기본적으로 나중에 올바른 답변을 보았습니다 :) – user1020069