From: christian@... (Christian Pekeler) Date: 2004-03-18T01:54:35+09:00 Subject: Using Hash parameters in SOAP calls Hi, I can't seem to figure out how to pass a Hash to a webservice function. This is what I'm doing: require "soap/wsdlDriver" wsdl = "http://localhost:8888/cgi-bin/WebObjects/Interview.woa/ws/WebServices?wsdl" factory = SOAP::WSDLDriverFactory.new(wsdl) @driver = factory.createDriver @driver.someWebserviceFunctionWithStringAndNumber("blah", 55) @driver.someWebserviceFunctionWithHash({"key1" => "value1", "key2" => "value2"}) someWebserviceFunctionWithStringAndNumber works fine, someWebserviceFunctionWithHash throws up with test_hash(WebServicesTest): SOAP::Mapping::MappingError: Cannot map Array to SOAP/OM. /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:61:in `obj2soap' /usr/local/lib/ruby/1.8/soap/mapping/mapping.rb:105:in `_obj2soap' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:119:in `array2soap' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:118:in `each' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:118:in `array2soap' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:45:in `obj2soap' /usr/local/lib/ruby/1.8/soap/mapping/mapping.rb:105:in `_obj2soap' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:128:in `elements2soap' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:125:in `each' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:125:in `elements2soap' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:110:in `struct2soap' /usr/local/lib/ruby/1.8/soap/mapping/wsdlRegistry.rb:43:in `obj2soap' /usr/local/lib/ruby/1.8/soap/mapping/mapping.rb:105:in `_obj2soap' /usr/local/lib/ruby/1.8/soap/mapping/mapping.rb:36:in `obj2soap' /usr/local/lib/ruby/1.8/soap/wsdlDriver.rb:210:in `rpc_send' Why is it trying to map an Array? Is Hash not supported by Ruby's SOAP implementation? Thanks, Christian