Sending raw XML using Savon 2

前端 未结 2 499
别那么骄傲
别那么骄傲 2020-12-19 07:31

I\'m trying to use Savon to send requests to a webservice. The service I\'m consuming requires nested namespaces, and I haven\'t figured out yet how to provide them on a req

相关标签:
2条回答
  • 2020-12-19 08:14

    The call should look like this:

    client.call(:some_op, xml: "<elem />")
    

    Or if you just want to set one or multiple namespaces then create a client as follows (without WSDL):

    client = Savon.client(
      :endpoint => 'http://www.example.com',
      :namespace => 'urn:core.example.com',
      :namespaces => { 'ns1' => 'http://v1.example.com',
                       'ns2' => 'http://v2.example.com' },
      :log => true,
      :log_level => :debug,
      :pretty_print_xml => true
    )
    

    The namespaces are a Hash parameter.

    0 讨论(0)
  • 2020-12-19 08:21

    It looks like Savon internally uses the Gyoku Gem to convert ruby hashes to XML, and Gyoku will not escape hash keys ending with exclamation marks according to the documentation: https://github.com/savonrb/gyoku#special-characters

    So this code works to get raw XML into the request while still using Savon to generate the envelope xml:

    client.call(:some_op, :message=>{:"op!"=>"<elem/>"})

    0 讨论(0)
提交回复
热议问题