Czy jest możliwe utworzenie żądania POST z Ruby z open-uri?Jak utworzyć żądanie POST z open-uri?
Odpowiedz
Niestety open-uri
obsługuje tylko czasownik GET
.
Można albo obniżyć poziom i użyć net/http
, albo użyć rest-open-uri
, który został zaprojektowany do obsługi POST
i innych czasowników. Możesz zainstalować gem install rest-open-uri
, aby go zainstalować.
Naprawdę polecam również rest-client. To doskonała baza do pisania klienta API.
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
on pracował dla mnie :)
-1 to nie za pomocą OpenURI do obsługi połączenia, używa Net :: HTTP. W tym przykładzie OpenURI jest używany tylko do załadowania modułu URI. –
Również zadeklarowane 'params', a następnie odwołanie' query' – KomodoDave
nie ma znaczenia, czy jego użycie, czy nie. jeśli open-uri nie może tego zrobić, ta odpowiedź pomoże wielu ludziom. nie ma sposobu, aby zgodzić się z tą odpowiedzią – mask8
tak proste jak się dostaje:
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
Polecam używanie response.methods - Object.methods
aby wyświetlić wszystkie dostępne metody, na przykład message
, header,
Bonus: POST/DELETE wnioski:
puts Net::HTTP.new("httpbin.org").post("/post", "a=1").body
puts Net::HTTP.new("httpbin.org").delete("/delete").body
Link jest teraz: https://github.com/rest-client/rest-client –