0

我在我的 Ruby Rails 控制器中使用 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

在我的规格测试中,我有:

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

这在我使用 Rails 5 和 actionpack 5 时有效。但是,当我切换到 Rails 6 和 actionpack 6 时, params[:a] 和 params[:b] 变为 nil 。

有谁知道出了什么问题?以及如何解决这个问题?

谢谢

4

1 回答 1

0

回答我自己:Soven 客户端在 Rails 5 和 6 中使用不同版本的解析器(芥末)。这最终会产生不同的 xml 消息。解决方案是在 Soven 客户端中将 no_message_tag 设置为 true 以使用 message.to_s 而不是将其解析为 xml。

于 2022-01-06T20:33:01.903 回答