savon在身体中有多个命名空间

时间:2018-03-26 07:33:28

标签: ruby-on-rails soap xml-namespaces savon

我是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,我应该如何修改代码以获得上述请求。

0 个答案:

没有答案