我想在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
首先是一种方法。
答案 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