如何获得Savon发送的原始请求

时间:2014-08-27 13:28:20

标签: 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

2 个答案:

答案 0 :(得分:1)

您可以破解Client classOperation class中的代码。

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

编辑: 如果Operation#build_request仍然像我三年前第一次发布它时所做的那样:

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

可能就是你要找的东西。

答案 1 :(得分:0)

我正在使用Savon 2.12,您可以使用类似这样的方法来获取将在请求中发送的内容:

List<User> list = dgvList.Items
                         .OfType<User>()
                         .Where(x => x.Checked == true)
                         .ToList();