简体   繁体   English

升级到 Rails 6 actionpack 6 时,WashOut::Soap 参数丢失

[英]WashOut::Soap parameters missing when upgrading to Rails 6 actionpack 6

I use Washout::SOAP in my Ruby Rails controller which has soap_action like this:我在我的 Ruby Rails controller 中使用了 Washout::SOAP ,它具有这样的soap_action:

soap_action 'action_name',
              :args   => {:a => :string, :b => :string},
              :return => {'tns:result' => StringArray},
              :response_tag => 'response'

def action_name
  params
  # do somthing
end

In my spec test, I have:在我的规格测试中,我有:

Savon.client( wsdl: wsdl_url ).call(:action_name, message: {a: 'A', b:'B'})

This works when I use Rails 5 and actionpack 5. However, when I switch to Rails 6 and actionpack 6, params[:a] and params[:b] becomes nil.这在我使用 Rails 5 和 actionpack 5 时有效。但是,当我切换到 Rails 6 和 actionpack 6 时,params[:a] 和 params[:b] 变为 nil。

Does anyone know what is wrong?有谁知道出了什么问题? and how to fix this?以及如何解决这个问题?

Thanks谢谢

To answer myself: Soven client uses different versions of parser (wasabi) in Rails 5 and 6. And that ends up making different xml messages.回答我自己:Soven 客户端在 Rails 5 和 6 中使用不同版本的解析器(芥末)。这最终会产生不同的 xml 消息。 The solution is to set no_message_tag to be true in Soven client to use message.to_s instead of parsing it as xml.解决方案是在 Soven 客户端中将 no_message_tag 设置为 true 以使用 message.to_s 而不是将其解析为 xml。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM