2
在Rails應用程序中,我想爲資源(用戶提供的URL)發出HTTP HEAD請求,以確保它存在。我也想暫停一段時間,以確保在花費一段合理的時間後,方法失敗。什麼是最直接的方法來實現這一點(如果可能,使用標準庫)?在Ruby中發出HTTP HEAD請求超時
在Rails應用程序中,我想爲資源(用戶提供的URL)發出HTTP HEAD請求,以確保它存在。我也想暫停一段時間,以確保在花費一段合理的時間後,方法失敗。什麼是最直接的方法來實現這一點(如果可能,使用標準庫)?在Ruby中發出HTTP HEAD請求超時
試試這個片斷:
require 'net/http'
Net::HTTP.start('www.some_site.com') do |http|
http.open_timeout = 2
http.read_timeout = 2
req = Net::HTTP::Head.new('/')
http.request(req).each { |k, v| puts "#{k}: #{v}" }
end
希望這是你在找什麼。
UPDATE
因爲有head
方法看起來像
def head(path, initheader = nil)
request(Head.new(path, initheader))
end
您也可以使用這個片段:
require 'net/http'
Net::HTTP.start('www.rubyinside.com') do |http|
http.open_timeout = 2
http.read_timeout = 2
http.head('/').each { |k, v| puts "#{k}: #{v}" }
end
感謝。 'Net :: HTTP :: Head.new('/')是'http.head('/')'? ([doc](http://apidock.com/ruby/Net/HTTP/head)) – jrdioko
隨意使用任何方法 - 'http.head()'是請求創建的縮寫,並將它們發送到服務器。我已經更新了我的初始帖子清晰 – WarHog
@WhHog你確定'http.open_timeout'完成任何事情嗎?我的印象是它只用於打開連接,我認爲這是通過'Net :: HTTP.start'完成的。 – Rodrigue