我为网络服务设置了一个soap4r
客户端,它运行得相当好。我们用它来将数据从一个数据库发送到另一个数据库(不用再问了......我知道它不是最优的),但是我们并不完全确定映射是否正确,所以它通常非常方便特定记录将生成的XML。
当然,这是可能的 - 如果你设置$DEBUG
,soap4r
将为你提供一个很好的转发XML。您甚至可以设置要将其发送到的“设备”(文件)。
但是,我希望能够在不必实际调用Web服务的情况下获取它将生成的XML。
有办法做到这一点吗?围绕着,我发现了各种obj2soap
和类似的方法,但它们似乎都不是我想要的。
答案 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