开发者

Full SOAP syntax for a Sharepoint DspSts.asmx query including dsp:authentication and dsp:dataRoot

开发者 https://www.devze.com 2023-02-02 20:56 出处:网络
I\'m trying to retrieve list data from a Sharepoint 2010 server using the webservice at DspSts.asmx. (Nope can\'t use oData here - long story). The WSDL suggests the following format:

I'm trying to retrieve list data from a Sharepoint 2010 server using the webservice at DspSts.asmx. (Nope can't use oData here - long story). The WSDL suggests the following format:

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

So I created the following sample request code (and send it out using 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>

However when I send that query I do not get a login prompt (when I use the list web service I get one) and then an error result:


<?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.</faults开发者_运维知识库tring>
            <detail>
                <queryResponse xmlns="http://schemas.microsoft.com/sharepoint/dsp">
                    <dsQueryResponse status="failure"/>
                </queryResponse>
            </detail>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

I'm using a hosted Sharepoint, so I don't know if I can tweak any security setting. Now my questions:

  • How can I enforce authentication?
  • What do I need to put into dsp:authentication
  • What to put in dsp:root

All samples I found didn't have dsp:authentication or dsp:root in it. Help is very much appreciated


There actually is a work around. If you read a different Sharepoint web service first, e.g. Lists.asmx, then you are properly prompted for credentials and the following calls to DspSts.asmx use the digest credentials created in the first call.

0

精彩评论

暂无评论...
验证码 换一张
取 消