2013-11-28 49 views
2

我讀railscast#290與薩翁第1版 於是,我就代替命令第2版去,但我不能這樣做。如何爲薩翁版本的參數2

http://railscasts.com/episodes/290-soap-with-savon?view=asciicast

我換成這樣的命令。

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_actions

VER2 client.operations

VER1 client.request :web, :get_info_by_zip, body: { "USZIP" => "90210" }

VER2 client.call(:get_info_by_zip) # need more

我如何設置命名空間web和身體參數USZIP90210

回答

3

試試這個(www.webservicex.net並不十分可靠,雖然):

#!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 
+0

是他們的一種方式來獲得信息的密鑰動態例如「USZip」像上市操作 – aashish

+0

我怕我不知道理解你的問題。如果我猜對了,那麼WSDL就是你想要的。它爲您提供了SOAP調用的結構。 –

+0

使用wsdl將獲得可用操作的結構。他們是列出每個操作的消息選項的一種方式。 – aashish