我需要调用一个不包含任何操作封装的SOAP服务。
通常使用Savon(Ruby 2.3,Savon 2.11),我们有:
client = Savon.client(endpoint: 'http://example.com', namespace: 'http://v1.example.com')
response = client.call(:opName, message_hash)
这将生成一个请求,如:
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://v1.example.com" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wsdl:opName>
...message content ...
</wsdl:opName>
</env:Body>
</env:Envelope>
但我不希望它生成<wsdl:opName>
节点。我尝试将nil
作为操作传递,但它会将标记生成为<wsdl:>
。
我想在没有它的情况下生成SOAP请求,例如:
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsdl="http://v1.example.com" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
...message content ...
</env:Body>
</env:Envelope>