使用Savon / Ruby复制XML请求

我试图避免使用Nokogiri/Builder来构建我的XML,并希望在Ruby 2.0.0中使用Savon gem。 我有以下要求复制的请求:

     1     

到目前为止我有这个:

  def soap_client soap_client = Savon.client( wsdl: "http://10.10.10.10/ListApi.svc?wsdl" headers: {"Authorization" => "Basic"}, basic_auth: ['username', 'password'], env_namespace: :s, ssl_verify_mode: :none, log: true, :pretty_print_xml => true ) end 

然后soap_client.call :get_list, message: {'id' => 1}返回:

    1    

我无法弄清楚如何完全复制第一个请求。 GetList上的tns: namespace是错误的,我也无法复制<listRequest xmlns:a = piece。 有关如何在萨翁内做到这一点的任何想法?

GetList上的命名空间是正确的。 你可能需要写的是

 soap_client.call(:get_list, :attributes => {'xmlns:b'=>'http://schemas.datacontract.org/'}, message: { 'ListRequest' => { 'tns:id' => 1 } } 

这不是您的问题的确切解决方案,因为我无法访问您的wsdl并且无法测试。 但是你应该得到解决方案的关键。