2010-08-10 4 views
4

웹 서비스를 사용하기 위해 Ruby와 Savon을 사용하려고합니다.ruby ​​및 savon으로 비누 서비스 사용

테스트 서비스는 SOAP 예외를 반환 http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2

 
require 'rubygems' 
require 'savon' 

client = Savon::Client.new "http://www.webservicex.net/stockquote.asmx?WSDL" 
client.get_quote do |soap| 
    soap.body = {:symbol => "AAPL"} 
end 

입니다. 비누 봉투를 검사하면 비누 요청에 올바른 네임 스페이스가없는 것 같습니다.

아무도 내가이 일을하기 위해 할 수있는 것을 제안 할 수 있습니까? 다른 웹 서비스 끝점에도 동일한 문제가 있습니다. 이 Savon는 네임 스페이스를 처리하는 방식에 문제가

답변

5

감사합니다. 이 응답을 참조 Why is "wsdl" namespace interjected into action name when using savon for ruby soap communication?

특별히 soap.input 전화 및 그것을 어레이를 통과시킴으로써이 문제를 해결할 수

는 첫 번째 요소는 방법이고, 두 번째는 공간 (S)

require 'rubygems' 
require 'savon' 

client = Savon::Client.new "http://www.webservicex.net/stockquote.asmx?WSDL" 
client.get_quote do |soap| 
    soap.input = [ 
    "GetQuote", 
    { "xmlns" => "http://www.webserviceX.NET/" } 
    ] 
    soap.body = {:symbol => "AAPL"} 
end 
1

사용자를 포함하는 해시 최신 보석이 메소드 "요청"다음에 필요한 메소드에 대한 기호 참조를 사용한다는 것을 알 수 있습니다.

require 'rubygems' 
require 'savon' 

client = Savon::Client.new "http://www.webservicex.net/stockquote.asmx?WSDL" 
client.request :get_quote do |soap| 
    soap.input = [ 
    "GetQuote", 
    { "xmlns" => "http://www.webserviceX.NET/" } 
    ] 
    soap.body = {:symbol => "AAPL"} 
end