ruby - 如何获取 Savon 发送的原始请求

标签 ruby savon

我正在使用 Savon 2.6 来实现 SOAP 服务的客户端。 我必须在数据库中保存原始请求和原始响应。 获取原始 XML 响应不是问题,但如何获取原始 XML 请求?

我通过以下方式使用Savon:

client = Savon.client(wsdl: "http://blabla.com/bla.wdsl")
response = client.call(:operation_name, message: {param1: "a", param2: "b'})
response.to_xml # => get raw XML response

最佳答案

您可以破解 Client class 中的代码和 Operation class .

我所做的是在 Operation 中添加一个方法返回请求。在 Client#call我将请求设置为实例变量并为其添加了 getter。

编辑: 如果Operation#build_request仍然执行我三年多前第一次发布此内容时所做的事情,例如:

def request(locals = {}, &block)
  builder = build(locals, &block)
  build_request(builder)
end

可能就是您正在寻找的。

关于ruby - 如何获取 Savon 发送的原始请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25528484/

相关文章:

鲁比·萨文 : How to get the request text sent to server?

ruby-on-rails - 在 Savon 中使用 HTTP 代理

ruby - 如何在 rails_admin 的编辑表单中隐藏 "Save and Add Another"按钮?

ruby - 先决条件检查 ruby

ruby - Sinatra 不知道这个小曲

ruby - 从 Ruby 成功调用 WCF 服务?任何人?

ruby - SSL 模式标志 - 证书验证 : is it safe to use :none?

ruby-on-rails - Savon 可以允许重定向吗? 302 "Error"

ruby-on-rails - 将 Chiliproject 部署到 Dreamhost

ruby - 为什么在带有 block 的数组上调用 zip 总是返回 nil