使用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中。似乎是多余的,并且可能会出错。