2011-10-20 3 views
3

Savon과 함께 webservices를 사용 중이며 WSDL에는 2 개의 바인딩이 있습니다. Savon에서 사용할 바인딩을 어떻게 지정합니까? 그 중 하나는 http이고 다른 하나는 https.입니다. https 서비스를 사용하려고합니다.Ruby Savon 바인딩 문제

<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 사용합니까 WSDL

에 대한 정보?

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

당신은을 만들 때 엔드 포인트를 덮어 쓸 수 있어야한다 : 나는 savon으로 현재 사용하고있는 코드는 내가 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