2011-01-21 108 views
17

我需要使用ruby創建一個HTTP PUT請求Ruby:使用JSON正文的PUT請求?

請求有JSON體

我能夠使用生成JSON體:

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

我需要發送這個PUT請求的網址:

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

有人可以告訴我如何在Ruby中做到這一點?

回答

20

使用restclient創業板安裝其他客戶端)是這樣的:

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 

wo在我的電腦上。

4

最簡單的方法是Net::HTTP

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

我收到錯誤: /usr/lib/ruby/1.8/net/http.rb:1060:in'request':undefined method'closed?'對於nil:NilClass(NoMethodError) from /usr/lib/ruby/1.8/net/http.rb:996:in'request_put' from json.rb:23 – unicornherder

+0

Yikes,不知道。它適用於我: -/ –

+0

@dpigera確保您的身份驗證正確。 –