18

我需要使用 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 中做到这一点吗?

4

2 回答 2

20

像这样使用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

在我的电脑上工作。

于 2011-01-21T22:32:29.083 回答
4

最简单的方法是Net::HTTP

require 'net/http'
http = Net::HTTP.new('www.data.com')
response = http.request_put('/?access_token=123', jsonbody)
于 2011-01-21T18:52:37.680 回答