使用soap4r生成XML而不调用Web服务?

时间:2009-07-27 16:16:29

标签: ruby soap4r

我为网络服务设置了一个soap4r客户端,它运行得相当好。我们用它来将数据从一个数据库发送到另一个数据库(不用再问了......我知道它不是最优的),但是我们并不完全确定映射是否正确,所以它通常非常方便特定记录将生成的XML。

当然,这是可能的 - 如果你设置$DEBUGsoap4r将为你提供一个很好的转发XML。您甚至可以设置要将其发送到的“设备”(文件)。

但是,我希望能够在不必实际调用Web服务的情况下获取它将生成的XML。

有办法做到这一点吗?围绕着,我发现了各种obj2soap和类似的方法,但它们似乎都不是我想要的。

1 个答案:

答案 0 :(得分:1)

间接答案:你可能想看看handsoap。它更快,并试图更像Ruby。它使用构建器式XML生成 - 但您必须自己生成所有内容。它更像是一个以干净的方式编写客户端的工具箱。通过这种方式,您可以了解生成的内容(并且可以轻松检查)。

另一种选择是设置$ DEBUG并在之后恢复它:

$REMEMBER_DEBUG_STATE = $DEBUG
$DEBUG = true
# call soap (and have your XML generated)
$DEBUG = $REMEMBER_DEBUG_STATE

这可以被提取到这样一个很好的函数:

def with_debug_output
  remember = $DEBUG
  $DEBUG = true
  yield if block_given?
  $DEBUG = remember
end

然后使用它:

with_debug_output do
  # call soap
end