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
On 19.04.2007 23:53, [email protected] wrote:
url = URI.parse('http://127.0.0.1/ec/data.xml')
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
On Apr 20, 4:00 am, Robert K. [email protected] wrote:
xml = res.body
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<values.length;i++)
sb.append(values[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.
On 25.04.2007 00:05, [email protected] wrote:
name.
xml = res.body
req.set_form_data(‘test’=>[1, 2])
url = URI.parse(“http://localhost/test/scott.jsp”)
puts xml
%>
Thanks for the help.
First I’d make sure your JSP actually behaves as expected, i.e. detects
multiple values properly. For example, you could do something like this
<%= Arrays.asList( request.getParameterValues(“test”) ) %>
This should print a comma separated and bracket enclosed list.
Only then I’d continue to work on the Ruby side.
robert