Sharepoint DspSts.asmx查询的完整SOAP语法,包括dsp:authentication和dsp:dataRoot

时间:2011-01-05 15:29:07

标签: web-services sharepoint sharepoint-2010

我正在尝试使用DspSts.asmx上的Web服务从Sharepoint 2010服务器检索列表数据。 (Nope不能在这里使用oData--长篇故事)。 WSDL建议采用以下格式:

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

所以我创建了以下示例请求代码(并使用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>

然而,当我发送该查询时,我没有得到登录提示(当我使用列表Web服务时,我得到一个)然后出现错误结果:


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

我正在使用托管的Sharepoint,因此我不知道是否可以调整任何安全设置。现在我的问题:

  • 如何执行身份验证?
  • 我需要将什么内容放入dsp:authentication
  • 放入dsp:root
  • 的内容

我发现的所有样本都没有dsp:authentication或dsp:root。 非常感谢帮助

1 个答案:

答案 0 :(得分:0)

实际上有一个解决方法。如果您首先阅读其他Sharepoint网络服务,例如Lists.asmx,然后您被正确提示输入凭据,以下对DspSts.asmx的调用使用在第一次调用中创建的摘要凭据。