使用savon gem,我得到以下请求XML:

<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:wsdl="URL"
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:ins0="SOME URL">
        <soap:Body>
            <ins0:Test xmlns="SOME URL">
            </ins0:Test>
        </soap:Body>
    </soap:Envelope>

但是它应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:wsdl="URL"
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
        <soap:Body>
            <Test xmlns="SOME URL">
            </Test>
        </soap:Body>
    </soap:Envelope>

注意ins0已删除。

有什么建议么?

最佳答案

这两个XML文档是等效的,因此只要该文档由XML兼容代理解析就不会有问题。

Savon生成的文档只是为“SOME URL”命名空间创建了ins0的命名空间前缀。对于具有该 namespace 中许多元素的大型SOAP文档,这很方便。在此示例中,前缀不是必需的。

我看到的唯一潜在问题是,Savion生成的文档似乎两次声明了ins0命名空间-一次在soap:Envelope中,然后在soap:Body中。似乎是多余的,并且可能会出错。

10-06 05:52