Web services 解释从WSDL生成的SOAP请求

Web services 解释从WSDL生成的SOAP请求,web-services,soap,wsdl,Web Services,Soap,Wsdl,我目前正在处理一个SOAP项目。我正在使用Python公开一个soap服务,项目的WSDL是 当我使用SOAPUI从wsdl生成示例请求时,结果正如我所期望的那样: 请求1 <soapenv:Body> <urn:SendSimpleSMS soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <req xsi:type="urn:SimpleSMSR

我目前正在处理一个SOAP项目。我正在使用Python公开一个soap服务,项目的WSDL是

当我使用SOAPUI从wsdl生成示例请求时,结果正如我所期望的那样

请求1

   <soapenv:Body>
      <urn:SendSimpleSMS soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <req xsi:type="urn:SimpleSMSRequest">
            <contactsid xsi:type="xsd:string">?</contactsid>
            <messages xsi:type="urn:ArrayOfSimpleSMSRequestMessage">
               <item xsi:type="urn:SimpleSMSRequestMessage">
                  <body xsi:type="xsd:string">?</body>
                  <senderid xsi:type="xsd:string">?</senderid>
                  <to xsi:type="xsd:string">?</to>
               </item>
            </messages>
            <password xsi:type="xsd:string">?</password>
            <scheduleddatetime xsi:type="xsd:string">?</scheduleddatetime>
            <templateid xsi:type="xsd:string">?</templateid>
            <username xsi:type="xsd:string">?</username>
         </req>
      </urn:SendSimpleSMS>
   </soapenv:Body>

?
?
?
?
?
?
?
?
但是,今天我从一些客户那里得到报告,他们正在使用的工具(由.NET提供支持的工具)从WSDL创建了一个不起作用的示例请求。然后我尝试了一些工具(Storm、Webservice studio),它们都会生成以下请求:

请求2:

<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <tns:SendSimpleSMS>
      <req href="#id1" />
    </tns:SendSimpleSMS>
    <tns:SimpleSMSRequest id="id1" xsi:type="tns:SimpleSMSRequest">
      <contactsid xsi:type="xsd:string" />
      <messages href="#id2" />
      <password xsi:type="xsd:string" />
      <scheduleddatetime xsi:type="xsd:string" />
      <templateid xsi:type="xsd:string" />
      <username xsi:type="xsd:string" />
    </tns:SimpleSMSRequest>
    <tns:ArrayOfSimpleSMSRequestMessage id="id2" xsi:type="tns:ArrayOfSimpleSMSRequestMessage">
      <message href="#id3" />
    </tns:ArrayOfSimpleSMSRequestMessage>
    <soapenc:Array id="id3" soapenc:arrayType="tns:SimpleSMSRequestMessage[1]">
      <Item href="#id4" />
    </soapenc:Array>
    <tns:SimpleSMSRequestMessage id="id4" xsi:type="tns:SimpleSMSRequestMessage">
      <body xsi:type="xsd:string" />
      <senderid xsi:type="xsd:string" />
      <to xsi:type="xsd:string" />
    </tns:SimpleSMSRequestMessage>
  </soap:Body>

我的soap库拒绝了第二个请求。我也很难理解第二个请求-这怎么有效

我的意思是,WSDL说元素中会有一个元素。但是第二个请求显然没有遵循这种语法

我对SOAP非常陌生,所以请帮我找出第二个请求是否有效。如果是,这是否因为不同的SOAP版本而有效?也许可以让我看一些文档来理解第二个请求是如何有效的


感谢

这是一个RPC/编码样式的Web服务,通常存在跨平台兼容性问题。您能指出一些文档进行研究吗?请看一下,这就是WS-I基本配置文件存在的原因: