使用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
已删除。
有什么建议吗?
答案 0 :(得分:2)
两个XML文档是等效的,因此只要文档由符合XML的代理程序解析就不会有问题。
Savon生成的文档只是为“SOME URL”命名空间创建ins0的命名空间前缀。这对于包含该命名空间中的许多元素的大型SOAP文档很方便。在此示例中,前缀不是必需的。
我能看到的唯一潜在问题是,Savion生成的文档似乎两次声明了ins0命名空间 - 一次在soap:Envelope中,然后再在soap:Body中。似乎是多余的,可能会出错。