2008-10-28 10 views

Respuesta

29

Desafortunadamente open-uri solo es compatible con el verbo GET.

Puede desplegar un nivel y usar net/http, o usar rest-open-uri, que fue diseñado para admitir POST y otros verbos. Puede hacer gem install rest-open-uri para instalarlo.

10

También recomendaría rest-client. Es una excelente base para escribir un cliente API.

+1

El enlace es ahora: 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 

que trabajó para mí :)

+6

-1 Esto no es utilizando OpenURI para manejar la conexión, está usando Net :: HTTP. En este ejemplo, OpenURI solo se usa para cargar el módulo URI. –

+0

También ha declarado 'params' y luego 'query' – KomodoDave

+0

no importa si está usando o no. si open-uri no puede hacerlo, esta respuesta ayudará a muchas personas. no hay forma de rechazar esta respuesta – mask8

1

Tan simple como se pone:

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 

recomiendo el uso de response.methods - Object.methods para ver todos los métodos disponibles, por ejemplo, message, header,

Bonus: Enviar/Eliminar solicitudes:

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