SOAP WSDL错误配置SOAP而不是SOAPENV

时间:2014-08-07 10:52:25

标签: java web-services jsp soap wsdl

我有一个包含请求配置的wsdl文件,如下所示:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bscs="http://www.website.com/ws/bscs">
   <soapenv:Header/>
   <soapenv:Body>
      <bscs:MyAction>
         <param1>?</param1>
         <param2>?</param2>
      </bscs:MyAction>
   </soapenv:Body>
</soapenv:Envelope> 

但是在检查网络服务器的日志时,肥皂请求会以这种方式发送:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <ns3:MyAction xmlns:ns2="http://www.website.com/ws" xmlns:ns3="http://www.website.com/ws/bscs">
            <param1>20045454545</param1>
            <param2>45454</param2>
        </ns3:MyAction>
    </soap:Body>
</soap:Envelope>

您对可能导致问题的原因有所了解吗?

场景是我们在properiatry系统(sys1)中集成了SOAP服务。现在我们希望将该服务托管在另一个系统(sys2)中,并像往常一样保持sys1和托管服务之间的通信。

1 个答案:

答案 0 :(得分:0)

其中任何一个都没有错。第一个指定名称空间为soapenv

<soapenv:Envelope xmlns:**soapenv**="http://...

第二个指定命名空间为soap

<soap:Envelope xmlns:**soap=**"http://schemas...

这是正常的XML namespace behaviour。命名空间是别名:它们所调用的内容并不重要,它们的定义方式非常重要,这在它们被声明时提供的URL中有所描述。在这种情况下,两个名称空间都由http://schemas.xmlsoap.org/soap/envelope/定义,因此它们是相同的。

完全由消息创建者决定他们称之为命名空间。