0

使用 .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 方面的专家,但这有什么大不了的吗?

4

1 回答 1

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.comhttp://www.b.comhttp://www.c.com)。

于 2013-01-31T10:33:41.637 回答