[英]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.