From: Kishore Date: 2005-12-22T03:42:49+09:00 Subject: Re: Ruby SOAP client communication with Microsoft .NET webservice Hi Kero: Thanks for getting back to me. I got it to work after reading through some of nahi's emails (thanks to him). The steps I followed were as follows: 1. Download soap4r from SVN. svn co http://dev.ctor.org/svn/soap4r/trunk/bin soap4r This will result in two files being downloaded - wsdl2ruby.rb and xsd2ruby.rb. The one I used was the wsdl2ruby.rb. 2. Generate sample SOAP client file ruby wsdl2ruby.rb --wsdl http://location_of_WSDL --type client This will result in the creation of three files - default.rb, defaultDriver.rb and WSClient.rb. The sample client file is WSClient.rb. Inside this file, I found all the remote methods and "nil" arguments being passed to them. For e.g., I had a remote method defined as follows in my web-service: string observe (string req_id, string[] names, string[] values); The second and third argument for this file were vectors of strings. In the ruby client file, this method was exposed as follows: obj = WSSoap.new(nil) parameters = nil puts obj.observe(parameters) So, even though my remote method should have three arguments, here there is only one. According to nahi's email, I needed to construct a hash table and pass that as the single argument. 3. Pass actual arguments. name = ['CENTER', 'SPAN', 'SCALE', 'YREF', 'INTERVAL'] val = ['5.18 GHz', '2.95 MHz', '4.00', '-68.70', '30000'] parameters = { 'req_id' => '1', 'names' => {:string => name}, 'values' => {:string => val} } result = obj.observe(parameters) puts result.inspect Hope that helps, Kishore Kero wrote: > > Thanks a lot. That worked out. Would you know how to pass an array of > > strings as argument? I am trying to the following: > > > > Request = Struct.new(:request_id, :names, :values) > > result = soap_client.stopGenerate(Request.new("1", ["POWER", "FREQ"], > > ["-15", "5.18GHz"])) > > I have something like > Request = Struct.new(...) > Names = Struct.new(...) > Request.new(1, Names.new(["power", "freq"], Values.new([...]) > > i.e. the arrays wrapped in their own structs. > > However, I needed different soap requests; I got to it after a *detailed* > look (yuck) at the wsdl, I suppose yours might look different. YMMV. > > And here my experience ends. I got working what I needed, then stopped > looking. > > Bye, > Kero.