使用net / http中的[]访问标头值

时间:2013-04-07 12:24:08

标签: ruby http

我想在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

到目前为止一直很好,但我想以类似Hash的方式访问http.head的值:

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

浏览documentation我开始想知道为什么each首先是一种方法。

2 个答案:

答案 0 :(得分:3)

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

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

所有库方法应该只提供基本功能,其余的必须由您的应用程序完成。虽然我很好奇这是否真的不可能用另一种方式。

答案 1 :(得分: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