Ruby:PUT请求与JSON正文?

我需要使用ruby创建HTTP PUT请求

该请求具有JSON正文

我能够使用以下方法生成JSON主体:

require 'rubygems' require 'json' jsonbody = JSON.generate["message"=>"test","user"=>"user1"] 

我需要将此PUT请求发送到url:

 require 'open-uri' url = URI.parse('http://www.data.com?access_token=123') 

有人可以告诉我如何在Ruby中做到这一点?

使用restclient ( gem install rest-client ),如下所示:

 require 'rubygems' require 'rest_client' require 'json' jdata = JSON.generate(["test"]) RestClient.put 'http://localhost:4567/users/123', jdata, {:content_type => :json} 

反对以下sinatra服务:

 require 'sinatra' require 'json' put '/users/:id' do |n| data = JSON.parse(request.body.read) "Got #{data} for user #{n}" end 

适用于我的电脑。

最简单的方法是使用Net::HTTP

 require 'net/http' http = Net::HTTP.new('www.data.com') response = http.request_put('/?access_token=123', jsonbody)