How do I make a POST request with open-uri?

2019-01-17 07:20发布

问题:

Is it possible to make a POST request from Ruby with open-uri?

回答1:

Unfortunately open-uri only supports the GET verb.

You can either drop down a level and use net/http, or use rest-open-uri, which was designed to support POST and other verbs. You can do gem install rest-open-uri to install it.



回答2:

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

It worked for me :)



回答3:

I'd also really recommend rest-client. It's a great base for writing an API client.



回答4:

As simple as it gets:

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

I recommend using response.methods - Object.methods to see all the available methods, e.g. message, header,

Bonus: POST / DELETE requests:

puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body
puts Net::HTTP.new("httpbin.org").delete("/delete").body


标签: ruby open-uri