我有一个包含请求配置的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和托管服务之间的通信。
答案 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/
定义,因此它们是相同的。
完全由消息创建者决定他们称之为命名空间。