2010-10-03 20 views
10

¿Cómo puedo configurar el cuerpo de solicitud de una solicitud CURB para que sea mi cadena json? Estoy tratando de hacer una solicitud JSON POST usando Curb.Ruby: ¿Cómo envío una solicitud JSON POST usando Curb?

Mi código:

require 'rubygems' 
require 'curb' 
require 'json' 

myarray = {} 
myarray['key'] = 'value' 
json_string = myarray.to_json() 

c = Curl::Easy.http_post("https://example.com" 

     # how do I set json_string to be the request body? 

    ) do |curl| 
     curl.headers['Accept'] = 'application/json' 
     curl.headers['Content-Type'] = 'application/json' 
     curl.headers['Api-Version'] = '2.2' 
    end 

Respuesta

39

La forma correcta de hacer esto es simplemente agregar el contenido después de la URL:

c = Curl::Easy.http_post("https://example.com", json_string_goes_here 
    ) do |curl| 
     curl.headers['Accept'] = 'application/json' 
     curl.headers['Content-Type'] = 'application/json' 
     curl.headers['Api-Version'] = '2.2' 
    end 

Esto establecerá el json_string que es el cuerpo de la petición.

+0

Perfecto, me salvó también. – zachaysan

+5

Agradable. Algo como esto debería incluirse en la documentación de Curb. –

+2

Acabo de experimentar un poco de dolor con algunos de los datos que estaba tratando de poner en 'json_string_goes_here'. Usando la biblioteca ruby ​​json si aplica 'JSON.pretty_generate (object)' puede resolver algunos problemas con los caracteres no guardados. – hamitron

Cuestiones relacionadas