2010-07-13 4 views
2

J'essaie de consommer un service SOAP en utilisant la gemme Savon mais j'ai de la difficulté. J'ai accédé au service SOAP en utilisant soapUI et ça marche bien.Consommation d'un service SOAP dans Ruby en utilisant Savon gem

Mon code:

require 'rubygems' 
require 'savon' 

# Client instance with a WSDL endpoint 
client = Savon::Client.new "http://realtime.nationalrail.co.uk/ldbws/wsdl.aspx" 

p client.wsdl.namespace_uri 

p client.wsdl.soap_actions 

response = client.get_arrival_board 

L'erreur que je reçois:

D, [2010-07-13T11:38:58.967684 #3909] DEBUG -- : Retrieving WSDL from: http://realtime.nationalrail.co.uk/ldbws/wsdl.aspx 
"http://thalesgroup.com/RTTI/2008-02-20/ldb/" 
[] 
/home/abcb293/.gem/ruby/1.8/gems/savon-0.7.9/lib/savon/client.rb:92:in `method_missing': undefined method `get_arrival_board' for #<Savon::Client:0xb7597218> (NoMethodError) 
    from natrail.rb:11 

apprécierais toute aide.

+0

veuillez envoyer une erreur à: http://github.com/rubiii/savon/issues – rubiii

Répondre

2

Je n'ai pas toutes les données dont vous avez besoin, donc je n'ai pas pu tester cela. Peut très bien être un problème avec ce code, mais au moins, il vous mettra sur la bonne voie. J'espère que cela aide.

require 'rubygems' 
require 'savon' 

wsdl = "http://realtime.nationalrail.co.uk/ldbws/wsdl.aspx" 
token = "replace with your data" 
numRows = "replace with your data" 
crs = "replace with your data" 
filterCrs = "replace with your data" 
filterType = "replace with your data" 
timeOffset = "replace with your data" 

# Client instance with a WSDL endpoint 
client = Savon::Client.new wsdl 
request = client.get_arrival_board { |soap| 
soap.namespaces["xmlns:typ"] = "http://thalesgroup.com/RTTI/2010-04-26/ldb/types" 
soap.header = {"com:AccessToken" => ["com:TokenValue" => token]} 
    soap.body = { 
"typ:GetArrivalBoardRequest" =>[ 
     "typ:numRows" => numRows, 
     "typ:crs" => crs 
    "typ:filterCrs" => filterCrs 
    "typ:filterType" => filterType 
    "typ:timeOffset" => timeOffset] 
    }.to_soap_xml 
} 
puts request