2010-10-03 15 views
10

Làm cách nào để đặt yêu cầu của một yêu cầu CURB thành chuỗi json của tôi? Tôi đang cố gắng thực hiện yêu cầu POST JSON bằng Curb.Ruby: Làm cách nào để gửi yêu cầu POST JSON bằng Curb?

Mã của tôi:

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 

Trả lời

39

Cách đúng để làm điều này là chỉ cần thêm các nội dung sau 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 

này sẽ thiết lập json_string tới là cơ quan theo yêu cầu.

+0

Tuyệt vời, cũng đã lưu tôi. – zachaysan

+5

Rất đẹp. Một cái gì đó như thế này nên được đưa vào tài liệu Curb. –

+2

Tôi vừa trải qua một số nỗi buồn với một số dữ liệu tôi đã cố gắng đưa vào 'json_string_goes_here'. Sử dụng thư viện ruby ​​json nếu bạn áp dụng 'JSON.pretty_generate (object)' nó có thể giải quyết một số vấn đề với các ký tự không thoát. – hamitron