使用.Net Soap客户端和我的WSF / PHP客户端调用相同的SOAP服务,我可以看到发送的XML之间的差异。
这是我的:
<soapenv:Envelope>
<soapenv:Header>
<soapenv:Action>http://www.aaa.fr/SendMessage</soapenv:Action>
<wsse:Security soapenv:mustUnderstand="1">
<xenc:EncryptedKey Id="EncKeyID-xxxxxxxxx-xxxx-xxxx-xxxx">
这是.Net XML:
<s:Envelope>
<s:Header>
<a:Action s:mustUnderstand="1" u:Id="_3">http://www.aaa.fr/SendMessage</a:Action>
<o:Security s:mustUnderstand="1">
<e:EncryptedKey Id="EncKeyID-xxxxxxxxx-xxxx-xxxx-xxxx">
我不是XML和SOAP的专家,但这是一个大问题吗?
答案 0 :(得分:1)
区别在于命名空间前缀的定义。只要名称空间前缀“s”指向与“soapenv”相同的名称空间,并且“o”指向与“wsse”相同的名称空间,并且“e”指向与“xenc”等相同的名称空间。应该没有问题,XML实际上是一样的。
示例:
<a:NodeA xmlns:a="http://www.a.com">
<b:NodeB xmlns:b="http://www.b.com">
<c:NodeC xmlns:c="http://www.c.com">My Data!</c:NodeC>
</b:NodeB>
</a:NodeA>
与
相同<anamespace:NodeA xmlns:anamespace="http://www.a.com">
<bns:NodeB xmlns:bns="http://www.b.com">
<c:NodeC xmlns:c="http://www.c.com">My Data!</c:NodeC>
</bns:NodeB>
</anamespace:NodeA>
因为即使前缀不同,它们也指向两个示例中的相同名称空间(分别为http://www.a.com,http://www.b.com和http://www.c.com)。