Soap 如何为savon版本2设置参数

Soap 如何为savon版本2设置参数,soap,wsdl,savon,Soap,Wsdl,Savon,我正在阅读savon版本1附带的railscast#290。 所以我尝试替换版本2的命令,但我做不到 我替换了这些命令 ver1client=Savon::client.new(“http://www.webservicex.net/uszip.asmx?WSDL“” ver2client=Savon::client.new(wsdl:http://www.webservicex.net/uszip.asmx?WSDL“” ver1client.wsdl.soap\u操作 版本2client.

我正在阅读savon版本1附带的railscast#290。 所以我尝试替换版本2的命令,但我做不到

我替换了这些命令

ver1
client=Savon::client.new(“http://www.webservicex.net/uszip.asmx?WSDL“”

ver2
client=Savon::client.new(wsdl:http://www.webservicex.net/uszip.asmx?WSDL“”

ver1
client.wsdl.soap\u操作

版本2
client.operations

ver1
client.request:web,:get\u info\u by\u zip,body:{“USZIP”=>“90210”}

ver2
client.call(:get_info_by_zip)#需要更多信息

如何设置命名空间
web
和主体参数
USZIP
90210

试试这个(尽管www.webservicex.net不是很可靠):


它们是动态获取消息密钥的一种方法吗?例如“USZip”之类的列表操作恐怕我不明白您的问题。如果我猜对了,那么WSDL就是您想要的。它为您提供了SOAP调用的结构。使用wsdl将获得具有可用操作的结构。是列出每个操作的消息选项的一种方法。是的,SoapUI将为您提供包含所有必需和可选参数的正确语法。它使用WSDL实现。如果没有实现,您可以扩展WSDL解析器,如果您需要:-)。目前,您将获得操作列表,仅此而已。
#!ruby

require 'savon'

WSDL_URL = 'http://www.webservicex.net/uszip.asmx?wsdl'

client = Savon.client(wsdl: WSDL_URL,
                      log: true, # set true to switch on logging
                      log_level: :debug,
                      pretty_print_xml: true)

zip = ARGV[0] || "10004"

response = client.call(:get_info_by_zip, message: {"USZip"=>zip})

print response