使用Savon(Ruby on Rails)访问SOAP请求的请求主体

Mar*_*s W 3 ruby soap wsdl ruby-on-rails savon

我在Ruby on Rails中使用Savon gem与wsdl WS进行通信.一切正常,但我想使用自定义日志记录请求XML,即不是Rails或Savon记录器.我的代码看起来像这样:

    response = self.client.request :add_order do
      soap.body = { 
        :indata => {
          "CustomerNo" => config[:kundnr],
          "Pwd" => config[:password],
          "OrderDate" => order["purchase_order_date"].strftime('%Y%m%d')
        }
      }
    end
Run Code Online (Sandbox Code Playgroud)

访问响应没有问题,但请求怎么办?我需要通过将XML记录到DB字段来查看生产环境中发送的内容.

rub*_*iii 5

现在,没有简单的方法来获取请求XML.但是正如您所注意到的,Savon会将每个请求和响应记录到指定的记录器中.因此,如果您不更改日志级别,则可以使用类似Logger的自定义对象来响应:debug并存储记录的内容.

module DBLogger
  def self.debug(message)
    p message  # replace with custom impl.
  end
end

Savon.configure do |config|
  config.logger = DBLogger
end
Run Code Online (Sandbox Code Playgroud)

希望有所帮助!