【问题标题】:How can I send an HTTP PUT request in Ruby?如何在 Ruby 中发送 HTTP PUT 请求?
【发布时间】:2012-07-09 08:43:41
【问题描述】:

我正在尝试向特定的 URL 发送 PUT 请求,但到目前为止没有成功。

如果我是通过 HTTP 请求者 GUI 执行此操作,例如 this 之一,它就像在以下 url 上执行 PUT 一样简单:

http://www.mywebsite.com:port/Application?key=apikey&id=id&option=enable|disable

请注意,上述请求中指定了端口号。通过 ruby​​ 代码提交请求时,我也需要这样做。

如何在 Ruby 中复制这样的请求?

【问题讨论】:

  • 使用 restclient gem;有一个 PUT 方法。没有关于你所说的问题的任何细节,不知道还能说什么。
  • restclient 非常好,如果你不想要更多的依赖,你可以使用 net/http,它是标准库的一部分:rubyinside.com/nethttp-cheat-sheet-2940.html
  • 我尝试了 restclient 和 net/http,但都没有成功。我确定这是因为我的一些错误/缺乏知识。将不胜感激使用任何一个的进一步解释。我更喜欢 net/http 而不是 restclient。
  • 如果您能准确地向我们展示您尝试访问的服务会更清楚。你确定你的意思是PUT请求吗?看起来更像是您想要一个 GET 请求来接收一些数据?
  • 嗨,peterept,不幸的是,这是一部作品,我无法透露更多信息。但是,这是一个 put 请求,而不是 get。我已经实现了请求哈哈

标签: ruby http rest put


【解决方案1】:
require 'net/http'

port = 8080
host = "127.0.0.1"
path = "/Application?key=apikey&id=id&option=enable"

req = Net::HTTP::Put.new(path, initheader = { 'Content-Type' => 'text/plain'})
req.body = "whatever"
response = Net::HTTP.new(host, port).start {|http| http.request(req) }
puts response.code

Larry 的回答帮助我指明了正确的方向。多一点挖掘帮助我找到了这个答案指导的更优雅的解决方案。

http = Net::HTTP.new('www.mywebsite.com', port)
response = http.send_request('PUT', '/path/from/host?id=id&option=enable|disable')

【讨论】:

  • 我在哪里可以包含我的请求的参数?
  • 拉里,这很有帮助。感谢您花时间这样做。
  • @finiteloop: send_request 为您要“PUT”的数据采用第三个参数
  • send_request 还为自定义标头采用可选的第四个参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
  • 1970-01-01
  • 1970-01-01
  • 2022-12-25
相关资源
最近更新 更多