2010-10-03 13 views
10

CURB talebinin istek gövdesini json dizim olarak nasıl ayarlayabilirim? Curb kullanarak bir JSON POST isteği yapmaya çalışıyorum.Ruby: Nasıl Curb kullanarak bir JSON POST isteği gönderirim?

Kodum:

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 

cevap

39

Bunu yapmanın doğru yolu URL'nin sonra içeriği eklemektir: Bu json_string ayarlayacaktır

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 

istek vücut olmak.

+0

Mükemmel, beni de kurtardı. – zachaysan

+5

Güzel. Bunun gibi bir şey Curb belgelerine dahil edilmelidir. –

+2

Sadece 'json_string_goes_here' içine koymaya çalıştığım bazı verilerle biraz keder yaşadım. “JSON.pretty_generate (object)” uygularsanız ruby ​​json kütüphanesini kullanarak, çıkışta olmayan karakterlerle ilgili bazı problemleri çözebilir. – hamitron