2013-11-28 1 views
2

savon 버전 1과 함께 사용하는 railscast # 290을 읽었습니다. 그래서 버전 2의 명령을 대체하려고했지만 할 수 없었습니다. savon 버전 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

내가하지 두려워 – aashish

+0

을 작업 목록과 같은 메시지 키를 동적으로 예 'USZip'을 얻을 수있는 방법들이있다 당신의 질문을 이해하십시오. 바로 추측한다면 WSDL이 당신이 원하는 것입니다. SOAP 호출 구조를 제공합니다. –

+0

wsdl을 사용하면 사용할 수있는 작업이있는 구조가됩니다. 각 작업에 대한 메시지 옵션을 나열하는 방법입니다. – aashish