http_request.set_form_data:获取json参数的字符串的未定义方法映射

时间:2013-04-03 05:43:16

标签: ruby json http jruby net-http

我正在尝试将json表示传递给set_form_data,并且遇到以下错误:

undefined method `map' for "{\"first_name\":\"bill\",\"last_name\":\"gates\"}":String

以下是我创建请求的方式:

 Net::HTTP::Post.new(uri.request_uri).set_form_data({"first_name" => "steve","last_name" => "jobs"}.to_json)

我缺少什么?

错误来自以下行:

/jruby/jruby-1.6.2/lib/ruby/1.9/net/http.rb:1593:in `set_form_data'

2 个答案:

答案 0 :(得分:4)

我使用了request.body=form_data而不是request.set_form_data,这有效 但是我不知道为什么set_form_data无效。

将此标记为答案,因为那是迄今为止对我有用的那个。

答案 1 :(得分:2)

set_form_data想要一个哈希,而不是一个json,所以跳过to_json它应该会更好。

即:

some_data = {:foo => :bar, :meh => :muh}
Net::HTTP::Post.new(uri.request_uri).set_form_data(some_data)