使用Savon将属性传递给SOAP请求

时间:2010-11-04 22:00:02

标签: ruby-on-rails soap savon

我正在使用一个简单的SOAP Web服务来获取一小段HTML以包含在Rails站点中。不幸的是,我对SOAP并不是特别熟悉。

我需要在下面的端点上调用TopHtml()SOAP方法,但我还需要传递一个像TopHtml(29)这样的ID号。

我正在使用Savon gem,我的代码看起来有点像:

response = Savon::Client.new('http://www.xxxxxx.xxx/webservices/services.asmx?wsdl').top_html(29)

有效但返回未提供ID号时的默认响应。

似乎没有传递身份证号码。有谁知道如何将参数传递给Savon SOAP请求?

非常感谢, 特里斯坦

2 个答案:

答案 0 :(得分:1)

response = Savon::Client.new('http://www.xxxxxx.xxx/webservices/services.asmx').top_html { |soap| soap.body = { :id => 29} }

答案 1 :(得分:1)

为了时间的利益,我最终自己准备了XML请求,这不太理想(并且几乎违背了使用Savon的目的),但这是我能够正确准备请求的唯一方法。 XML由服务的开发人员提供。

client = Savon::Client.new 'http://www.xxxxxx.xxx/webservices/services.asmx?wsdl'

response = client.top_html do |soap|
    soap.xml = ...long xml here...
end

但是我不会再浪费时间了。