1

我想在 Ruby 中发出 HTTP 标头请求。为此,我使用以下代码

Net::HTTP.start(target) do |http|
  http.open_timeout = 2
  http.read_timeout = 2
  http.head('/').each do |k, v|
    puts "#{k}: #{v}"
  end

到目前为止一切顺利,但我想以类似哈希的方式访问 http.head 的值:

 header = http.head('/')
 p header['Content-Type']

浏览文档我开始想知道为什么each首先是方法。

4

2 回答 2

3

我不确定 Ruby 库中是否有合适的方法,但是从您的代码中,您始终可以使用以下代码段net/http创建自己的方法:Hash

headers = Hash.new
http.head('/').each { |k, v| headers[k] = v }
puts header['Content-Type']

毕竟库方法应该只提供一个基本功能,其余的必须由您的应用程序完成。尽管我很好奇这是否真的不可能以另一种方式实现。

于 2013-04-07T12:33:41.460 回答
2

这实际上有效:

http_response = nil
Net::HTTP.start("stackoverflow.com", 80) do |http|
  http_response = http.head("/")
end

http_response['cache-control'] -> "public, max-age=10"

见:http ://ruby-doc.org/stdlib-2.0/libdoc/net/http/rdoc/Net/HTTP.html#method-i-head

于 2013-04-07T12:36:52.807 回答