从WSDL生成的SOAP请求的说明

时间:2014-07-15 11:04:33

标签: web-services soap wsdl

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

当我使用Soap UI从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>

我的肥皂库拒绝了第二个请求。我也很难理解第二个请求 - 这是如何有效的?

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

我对SOAP很新,所以请帮我查一下第二个请求是否有效。如果是,如果由于不同的SOAP版本而有效?也许请指点一些文档来了解第二个请求是如何有效的。

由于

0 个答案:

没有答案