30

是否可以使用 open-uri 从 Ruby 发出 POST 请求?

4

4 回答 4

34

不幸open-uri的是只支持GET动词。

您可以下拉一个级别并使用net/http,或使用rest-open-uri,它旨在支持POST和其他动词。你可以gem install rest-open-uri安装它。

于 2008-10-28T09:24:34.133 回答
15
require 'open-uri'
require 'net/http'
params = {'param1' => 'value1', 'param2' => 'value2'}
url = URI.parse('http://thewebsite.com/thepath')
resp, data = Net::HTTP.post_form(url, params)
puts resp.inspect
puts data.inspect

它对我有用:)

于 2011-12-13T20:02:31.803 回答
10

我也真的推荐rest-client。它是编写 API 客户端的绝佳基础。

于 2008-10-29T12:43:17.833 回答
1

就这么简单:

require 'open-uri'
require 'net/http'

response = Net::HTTP.post_form(URI.parse("https://httpbin.org/post"), { a: 1 })

puts response.code
puts response.message
puts response.body

我建议使用response.methods - Object.methods来查看所有可用的方法,例如messageheader,

奖励:POST / DELETE 请求:

puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body
puts Net::HTTP.new("httpbin.org").delete("/delete").body
于 2017-04-26T23:41:52.553 回答