【问题标题】:WashOut::Soap parameters missing when upgrading to Rails 6 actionpack 6升级到 Rails 6 actionpack 6 时,WashOut::Soap 参数丢失
【发布时间】:2022-01-06 16:20:32
【问题描述】:

我在我的 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 。

有谁知道怎么回事?以及如何解决这个问题?

谢谢

【问题讨论】:

    标签: ruby-on-rails activesupport savon wash-out


    【解决方案1】:

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

    【讨论】:

    • 更好的解决方案是使用芥末 3.5.0 而不是 3.6.1
    猜你喜欢
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2018-11-21
    相关资源
    最近更新 更多