2012-02-22 59 views
0

我用从我的虚拟服务器的WSDL验证在SharePoint WSDL

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <GetListCollection xmlns="http://schemas.microsoft.com/sharepoint/soap/" /> 
    </soap:Body> 
</soap:Envelope> 

,并采取响应取SOAP请求的soapUI工具。但是,当我尝试从我的真实服务器请求我无法验证。在肥皂信封中,我添加了标题

<soap:Header> 
    <AUTHHEADER> 
     <USERNAME>Administrator</USERNAME> 
     <PASSWORD>Password</PASSWORD> 
    </AUTHHEADER> 
    </soap:Header> 

但是有些问题。登录和传递是正确的,我检查。

UPD1

我发送这样的查询

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:AUTHHEADER> 
     <soap:USERNAME>Administrator</soap:USERNAME> 
     <soap:PASSWORD>Password</soap:PASSWORD> 
    </soap:AUTHHEADER> 
    <soap:Body> 
    <GetListCollection xmlns="http://schemas.microsoft.com/sharepoint/soap/" /> 
    </soap:Body> 
</soap:Envelope> 

,我有

<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</faultcode> 
     <faultstring>Server was unable to read request. ---> Request format is invalid: Missing required soap:Body element.</faultstring> 
     <detail/> 
     </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

从真实服务器。

回答

0

试图改变您的查询是这样的:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:Header xmlns:ns0="http://schemas.microsoft.com/sharepoint/soap/"> 
<ns0:AUTHHEADER> 
    <ns0:USERNAME>Administrator</ns0:USERNAME> 
    <ns0:PASSWORD>Password</ns0:PASSWORD> 
</ns0:AUTHHEADER> 
</soap:Header> 
<soap:Body> 
    <GetListCollection xmlns="http://schemas.microsoft.com/sharepoint/soap/" /> 
</soap:Body> 
</soap:Envelope> 

EDIT1:维修例再添ns至authheader。说实话:我不知道,如果在http://schemas.microsoft.com/sharepoint/soap的ns中定义了一个authheader元素,但我假装它,因为它对于每个WSDL接口都可能不同。我知道,存在WSSE标准,但它以不同的XML请求编码。

+0

第6行:元素不允许:AUTHHEADER @ http://schemas.xmlsoap.org/soap/envelope/元素标题@ http://schemas.xmlsoap.org/soap/envelope/ – Gorets 2012-02-22 08:23:58

+0

噢,对不起。 ..我编辑了我的答案。 Authheader似乎必须有另一个名称空间,但是soap:Header元素是强制性的... – 2012-02-22 09:37:08