2008-10-28 12 views

Antwort

29

Leider unterstützt open-uri nur das GET Verb.

Sie können entweder eine Ebene herunterlassen und net/http verwenden, oder rest-open-uri verwenden, die entwickelt wurde, um POST und andere Verben zu unterstützen. Sie können gem install rest-open-uri installieren, um es zu installieren.

10

Ich würde auch wirklich rest-client empfehlen. Es ist eine gute Grundlage für das Schreiben eines API-Clients.

+1

Der Link lautet jetzt: 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 

Es funktionierte für mich :)

+6

-1 Dies ist nicht mit OpenURI, um die Verbindung zu handhaben, verwendet es Net :: HTTP. In diesem Beispiel wird OpenURI nur zum Laden des URI-Moduls verwendet. –

+0

Auch Sie haben 'params' erklärt, dann referenzierte' query' – KomodoDave

+0

spielt keine Rolle, ob es verwendet oder nicht. Wenn open-uri das nicht kann, wird diese Antwort vielen Menschen helfen. Keine Möglichkeit, diese Antwort zu verwerfen – mask8

1

So einfach wie es nur geht:

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 

ich response.methods - Object.methods empfehlen alle verfügbaren Methoden, um zu sehen, zum Beispiel message, header,

Bonus: POST/DELETE-Anfragen:

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