3

I just installed Savon 2.0.2 on Rails 3.2.11. When I try to create a new client in the console, I get TypeError: can't convert String into Hash:

1.9.3-p362 :003 > client = Savon::Client.new("http://www.webservicex.net/uszip.asmx?WSDL")
TypeError: can't convert String into Hash
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `merge'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `initialize'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `new'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `initialize'
    from (irb):3:in `new'
    from (irb):3
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
    from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

Any idea why this could be happening? It's a brand new, almost-vanilla Rails app, so I don't understand what could be going wrong.

Jason Swett
  • 43,526
  • 67
  • 220
  • 351

2 Answers2

7

Try:

client = Savon::Client.new(wsdl: "http://www.webservicex.net/uszip.asmx?WSDL")

or

client = Savon.client(wsdl: "http://www.webservicex.net/uszip.asmx?WSDL")
Jiří Pospíšil
  • 14,296
  • 2
  • 41
  • 52
0

As soap expects hashes instead of string so you can add hash in parameters in hash key,value format

Older way in rails to describe hash key

client = Savon.client(:wsdl=> "http://www.webservicex.net/uszip.asmx?WSDL")

New way to describe hash in rails

client = Savon.client(wsdl: "http://www.webservicex.net/uszip.asmx?WSDL")
Taimoor Changaiz
  • 10,250
  • 4
  • 49
  • 53