2011-01-05 2 views
1

J'essaie de récupérer des données de liste à partir d'un serveur Sharepoint 2010 en utilisant le service web de DspSts.asmx. (Nope ne peut pas utiliser oData ici - longue histoire). Le WSDL indique le format suivant:Syntaxe SOAP complète pour une requête DspSts.asmx Sharepoint incluant dsp: authentication et 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> 

Je crée le code de demande d'exemple suivant (et l'envoyer à l'aide 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> 

Cependant, lorsque je vous envoie cette requête, je ne reçois pas un invite de connexion (lorsque j'utilise le service Web de liste que je reçois un) et un résultat d'erreur:


<?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> 

J'utilise un Sharepoint hébergé, donc je ne sais pas si je peux modifier tout paramètre de sécurité. Maintenant, mes questions:

  • Comment puis-je imposer l'authentification?
  • Que dois-je mettre en dsp: l'authentification
  • Que mettre dans dsp: racine

Tous les échantillons que je trouve ne pas dsp: l'authentification ou dsp: racine en elle. L'aide est très appréciée

Répondre

0

Il y a vraiment un travail à faire. Si vous lisez d'abord un service Web Sharepoint différent, par exemple Lists.asmx, vous êtes invité à entrer les informations d'identification et les appels suivants à DspSts.asmx utilisent les informations d'identification abrégées créées lors du premier appel.

Questions connexes