【问题标题】:Ruby: PUT Request with JSON body?Ruby:带有 JSON 正文的 PUT 请求?
【发布时间】:2011-06-13 08:22:47
【问题描述】:

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

【问题讨论】:

    标签: ruby json httprequest put


    【解决方案1】:

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

    在我的电脑上工作。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我收到错误:/usr/lib/ruby/1.8/net/http.rb:1060:in request': undefined method closed?'对于 nil:NilClass (NoMethodError) 来自 /usr/lib/ruby/1.8/net/http.rb:996:in `request_put' 来自 json.rb:23
      猜你喜欢
      • 1970-01-01
      • 2015-08-14
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      相关资源
      最近更新 更多