Можно ли сделать запрос POST с Ruby с открытым uri?
Как сделать запрос POST с открытым uri?
Ответ 1
К сожалению, open-uri
поддерживает только глагол GET
.
Вы можете либо понизить уровень и использовать net/http
, либо использовать rest-open-uri
, который был разработан для поддержки POST
и других глаголов. Вы можете сделать gem install rest-open-uri
, чтобы установить его.
Ответ 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
Это сработало для меня:)
Ответ 3
Я бы также рекомендовал rest-client. Это отличная база для написания клиента API.
Ответ 4
Проще, чем это получается:
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
для просмотра всех доступных методов, например. message
, header,
Бонус: запросы POST/DELETE:
puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body
puts Net::HTTP.new("httpbin.org").delete("/delete").body