2008-10-28 19 views

Odpowiedz

29

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ć.

10

Naprawdę polecam również rest-client. To doskonała baza do pisania klienta API.

+1

Link jest teraz: https://github.com/rest-client/rest-client –

12
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 :)

+6

-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. –

+0

Również zadeklarowane 'params', a następnie odwołanie' query' – KomodoDave

+0

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

1

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