我是Savon2
的新手并将wsdl url传递给Savon.Client,并在标头中获得正确的响应,但我没有得到如何将多个命名空间传递给正文:
Savon.client(wsdl: 'https://someUrl.com/abcd?wsdl', ssl_verify_mode: :none, pretty_print_xml: true, log: true, env_namespace: :soapenv, namespace_identifier: nil) do
wsse_auth("api_demo_account", "somePassword", :digest)
end
client.call(:operation_name, message: {
"api01Req" => [{"shipCode" => 'ABC', "shipAmount" => 1123,
"countryCode" => "USA"}
]},
'attributes' => { "xmlns" => "http://someUrl.com" })
它正在生成像这样的身体代码:
<soapenv:Body>
<operationName xmlns="http://someUrl.com">
<xmlns:api01Req>
<shipCode>ABC</shipCode>
<shipAmount>1123</shipAmount>
<countryCode>USA</countryCode>
</xmlns:api01Req>
</operationName>
</soapenv:Body>
但我需要这样的请求:
<soapenv:Body>
<operationName xmlns="http://someUrl.com">
<api01Req>
<ns1:shipCode xmlns:ns1="http://someOtherUrl.com">ABC
</ns1:shipCode>
<ns2:shipAmount xmlns:ns2="http://someOtherUrl.com">1123
</ns2:shipAmount>
<ns3:countryCode xmlns:ns3="http://someOtherUrl.com">USA
</ns3:countryCode>
</api01Req>
</getTotalPostage>
</soapenv:Body>
就像这里一样,它生成ns1,ns2,ns3等以及xmlns:ns1,xmlns:ns2等。不同的URL&#39; s,我应该如何修改代码以获得上述请求。