2011-01-05 8 views
1

Ich versuche, Listendaten von einem Sharepoint 2010-Server mithilfe des Webdienstes bei DspSts.asmx abzurufen. (Nö kann oData hier nicht verwenden - lange Geschichte). Die WSDL schlägt das folgende Format:Vollständige SOAP-Syntax für eine Sharepoint DspSts.asmx-Abfrage einschließlich dsp: authentication und dsp: dataRoot

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp"> 
    <SOAP-ENV:Header> 
     <dsp:authentication/> 
     <dsp:dataRoot> 
      <dsp:root>STRING </dsp:root> 
     </dsp:dataRoot> 
     <dsp:request document="" method=""/> 
     <dsp:versions> 
      <dsp:version>STRING </dsp:version> 
     </dsp:versions> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <dsp:queryRequest/> 
    </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

Also habe ich den folgenden Beispielanforderungscode (und es auszusenden Oxygen XML):


<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp"> 
    <SOAP-ENV:Header> 
     <dsp:authentication/> 
     <dsp:dataRoot allowRemoteDataAccess="true" > 
      <dsp:root /> 
     </dsp:dataRoot> 
     <dsp:request service="DspSts" document="content" method="query"></dsp:request> 
     <dsp:versions> 
      <dsp:version>1.0</dsp:version> 
     </dsp:versions> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <dsp:queryRequest> 
      <dsQuery select="/list[@id='{8F3269B6-02EA-44C5-BA2B-BA8A4D5E9C44}']" resultContent="dataOnly" columnMapping="element" resultRoot="Rows" resultRow="Row"> 
      <Query QueryType="DSPQ"> 
      <Fields> 
       <AllFields /> 
      </Fields> 
      </Query>    
      </dsQuery>" 
     </dsp:queryRequest> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

Allerdings, wenn ich die Abfrage senden ich nicht bekommen ein Anmeldeaufforderung (wenn ich den Liste Web-Service verwende ich einen bekommen) und dann ein Fehlerergebnis:


<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <soap:Fault> 
      <faultcode>soap:Client.Dsp.InvalidSite</faultcode> 
      <faultstring>Failed to verify user permissions.</faultstring> 
      <detail> 
       <queryResponse xmlns="http://schemas.microsoft.com/sharepoint/dsp"> 
        <dsQueryResponse status="failure"/> 
       </queryResponse> 
      </detail> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

ich bin eine gehostete Sharepoint verwenden, so dass ich weiß nicht, ob ich eine Sicherheitseinstellung optimieren können. Jetzt meine Fragen:

  • Wie kann ich Authentifizierung erzwingen?
  • Was muss ich in dsp setzen: Authentifizierung
  • Was in dsp zu setzen: root

Alle Proben Ich habe nicht dsp haben gefunden: Authentifizierung oder dsp: root drin. Hilfe wird sehr geschätzt

Antwort

0

Es gibt tatsächlich eine Arbeit herum. Wenn Sie zuerst einen anderen Sharepoint-Webdienst lesen, z. Lists.asmx, dann werden Sie ordnungsgemäß zur Eingabe der Anmeldeinformationen aufgefordert, und die folgenden Aufrufe von DspSts.asmx verwenden die Digest-Anmeldeinformationen, die beim ersten Aufruf erstellt wurden.

Verwandte Themen