我正在使用Net::HTTP::Post
向预先确定的网址发送请求,如下所示:
my_url = '/path/to/static/url'
my_string_parameter = 'objectName=objectInfo'
my_other_string_parameter = 'otherObjectName=otherObjectInfo'
request = Net::HTTP::Post.new(my_url)
request.body = my_string_parameter
但是,我知道my_url
需要两个字符串参数。我有两个参数准备好(它们是静态生成的)要传入。有没有办法通过Ruby on Rails传递多个字符串 - my_string_parameter
和my_other_string_parameter
到一个帖子请求?
my_url = 'path/to/static/url'
# POST requests made to this url require 2 string parameters,
# required_1 and required_2
param1 = 'required_1=' + 'param1_value'
param2 = 'requred_2=' + 'param2_value'
request = request.NET::HTTP::Post.new(my_url)
如果我尝试request.body = param1
,那么正如预期的那样,我收到一条错误,说“必需字符串参数'required_2'不存在”。与request.body=param2
相同,会弹出相同的错误,说'required_1'不存在。我想知道是否有办法将两个参数传递给request.body?或类似的东西?
答案 0 :(得分:1)
试试这个。
uri = URI('http://www.example.com')
req = Net::HTTP::Post.new(uri)
req.set_form_data('param1' => 'data1', 'param2' => 'data2')
替代
uri = URI('http://www.example.com/')
res = Net::HTTP.post_form(uri, 'param1' => 'data1', 'param2' => 'data2')
puts res.body
对于request
或Get
之类的更多Patch
,您可以参考This官方文档。
答案 1 :(得分:0)
你可以像这样发送它。
data = {'params' => ['parameter1', 'parameter2']}
request = Net::HTTP::Post.new(my_url)
request.set_form_data(data)
答案 2 :(得分:0)
如果您的参数是字符串:
url = '/path/to/controller_method'
my_string_parameter = 'objectName=objectInfo'
my_other_string_parameter = 'otherObjectName=otherObjectInfo'
url_with_params = "#{url}?#{[my_string_parameter, my_other_string_parameter].join('&')}"
request = Net::HTTP::Post.new(url_with_params)
如果您的参数是哈希那会更容易
your_params = {
'objectName' => 'objectInfo',
'otherObjectName' => 'otherObjectInfo'
}
url = '/path/to/controller_method'
url_with_params = "#{url}?#{your_params.to_query}"
request = Net::HTTP::Post.new(url_with_params)