使用Savon将属性传递给SOAP请求
问题描述:
我正在使用简单的SOAP Web服务来获取一小段HTML以包含在Rails站点中。不幸的是,我并不特别熟悉SOAP。使用Savon将属性传递给SOAP请求
我需要在下面的端点上调用TopHtml()SOAP方法,但我还需要传递一个ID号,如TopHtml(29)。
我使用的是萨翁宝石和我的代码看起来有点像:
response = Savon::Client.new('http://www.xxxxxx.xxx/webservices/services.asmx?wsdl').top_html(29)
其作品,但返回时,未提供一个ID号为默认响应。
看起来身份证号码没有被传递。有谁知道如何将参数传递给Savon SOAP请求?
非常感谢, 特里斯坦
答
在由于时间的关系,我结束了准备请求XML我自己是不太理想的(而且几乎失去了使用萨翁的目的)但这是我能够正确准备请求的唯一方法。 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
Yuck,但我不打算再花时间。
答
尝试
response = Savon::Client.new('http://www.xxxxxx.xxx/webservices/services.asmx').top_html { |soap| soap.body = { :id => 29} }
根据萨翁文件,这应该工作。但是,查看请求对象时,在soap.body上设置的属性没有出现。 – tristanm 2010-11-11 00:18:23