From: "scott.archer@..." Date: 2007-04-25T07:10:06+09:00 Subject: Re: Multiple Parameters with Net:Http On Apr 20, 4:00 am, Robert Klemme wrote: > On 19.04.2007 23:53, scott.arc...@gmail.com wrote: > > > > > Is there a way to pass in 2 parameters with the same name to the > > Net::Http client in ruby? > > It's using a map right now, and it only stores one of the values. > > Is this a bug in the Http client implementation? > > The http spec allows you to pass in multiple parameters with the same > > name. > > > def get_data(data, in_only='Y') > > one = Time.new > > url = URI.parse('http://127.0.0.1/ec/data.xml') > > req = Net::HTTP::Post.new(url.path) > > req.basic_auth 'user', 'pass' > > req.set_form_data({'test'=>1, 'test'=>2}) > > res = Net::HTTP.new(url.host, url.port).start {|http| > > http.request(req) } > > case res > > when Net::HTTPSuccess, Net::HTTPRedirection > > xml = res.body > > else > > res.error! > > end > > end > > Without trying I'd assume that it should work like this: > > req.set_form_data({'test'=>[1, 2]}) > > btw, you can leave out the curlys > > req.set_form_data('test'=>[1, 2]) > > Kind regards > > robert Here is the ruby program I'm trying to run, and the Java Program that explains what I am trying to do a little better. require 'net/http' url = URI.parse("http://localhost/test/scott.jsp") req = Net::HTTP::Post.new(url.path) req.set_form_data({'test'=>['1','2']}) res = Net::HTTP.new(url.host, url.port).start {|http| http.request(req) } case res when Net::HTTPSuccess, Net::HTTPRedirection xml = res.body else res.error! end puts xml Here is the java jsp i'm testing it with. <% StringBuffer sb = new StringBuffer(); String[] values = request.getParameterValues("test"); sb.append(values.length + " "); for(int i=0;i <%=sb.toString()%> I would expect values to be an array with 2 items in it. When I run the program I get back a single value with "12" in it. instead of 2 separate values with "1" and "2" in them. The query string in the browser would look like "http://localhost/test/ scott.jsp?test=1&test=2" But i'd like to do that in ruby with a post request. Thanks for the help.