2010-10-03 12 views
10

Wie kann ich den Anfragetext einer CURB-Anfrage als meine JSON-Zeichenfolge festlegen? Ich versuche eine JSON POST-Anfrage mit Curb zu machen.Ruby: Wie sende ich eine JSON POST-Anfrage mit Curb?

Mein Code:

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 

Antwort

39

Der richtige Weg, dies zu tun ist, einfach den Inhalt nach der URL hinzufügen:

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 

Das die json_string gesetzt wird die Anfrage Körper.

+0

Perfekt, rettete mich auch. – zachaysan

+5

Schön. So etwas sollte in der Curb-Dokumentation enthalten sein. –

+2

Ich habe gerade etwas Trauer mit einigen der Daten erlebt, die ich versucht habe, in die 'json_string_goes_here' zu ​​bringen. Mit der Ruby-json-Bibliothek können Sie, wenn Sie 'JSON.pretty_generate (object) 'anwenden, einige Probleme mit nicht-gescannten Zeichen lösen. – hamitron