2010-10-03 16 views
10

Jak ustawić treść żądania CURB, aby był moim ciągiem json? Próbuję wykonać żądanie POST JSON przy użyciu krawężnika.Ruby: Jak wysłać żądanie POST JSON za pomocą Curb?

Mój kod:

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 

Odpowiedz

39

Prawidłowe sposobem na to jest po prostu dodać zawartość po 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 

Spowoduje to ustawienie json_string być ciało żądanie.

+0

Idealny, też mnie uratował. – zachaysan

+5

Nice. Coś takiego powinno być zawarte w dokumentacji Krawężnika. –

+2

Po prostu doświadczyłem smutku z niektórymi danymi, które próbowałem umieścić w 'json_string_goes_here'. Używanie biblioteki json ruby, jeśli zastosujesz 'JSON.pretty_generate (obiekt)' może rozwiązać niektóre problemy z znakami bez znaku. – hamitron

Powiązane problemy