2011-10-20 22 views
3

私はSavonでWebサービスを使用していますが、WSDLには2つのバインディングがあります。 Savonで使用するバインディングを指定するにはどうすればよいですか?そのうちの1つはhttpで、もう1つはhttps.ですhttpsサービスを使用しようとしています。Ruby Savonバインディングの問題

WSDL

<wsdl:service name="ExampleService"> 
    <wsdl:port name="ES" binding="tns:ES"> 
    <soap:address location="http://example.com/service.svc"/> 
    </wsdl:port> 
    <wsdl:port name="ES1" binding="tns:ES1"> 
    <soap:address location="https://example.com/service.svc"/> 
    </wsdl:port> 
</wsdl:service> 

どのように私はES1を使用してください上の情報?あなたが作成するときにエンドポイントを上書きすることができるはず

require 'httpclient' 
require 'soap/wsdlDriver' 
wsdl = "https://example.com/Messages.wsdl" 
soap_client = SOAP::WSDLDriverFactory.new(wsdl) 
driver = soap_client.create_rpc_driver('ExampleService','ES1') 
+1

コードを表示できますか? –

+0

コードが追加されました。ありがとう:) – revolver

答えて

3

:私はSOAP4Rを使用していたとき、私はサボンで、今使っているコードは

require 'savon' 
require 'httpclient' 
wsdl = "https://example.com/Messages.wsdl" 
driver = Savon::Client.new(wsdl) 
response = driver.request "someAction" 

ですが、私は次のコードを使用して結合を選択することができますSavon::Clientインスタンス:

client = Savon::Client.new do 
    wsdl.document = "https://example.com/Messages.wsdl" 
    wsdl.endpoint = "https://example.com/service.svc" 
end 

response = client.request "someAction" 
+0

おかげで男!魅力的な作品 – revolver