我一直在尝试修改这个方法,从重定向和返回的URL的内容,而不是返回新的有效的URL。红宝石 - 验证和更新网址
读到Net :: HTTP对象后,我仍然不确定get_response方法的工作原理。这是什么下载页面?有没有另一种方法可以调用,而不是下载它呢?
require 'net/http'
def validate(url)
uri = URI.parse(url)
response = Net::HTTP.get_response(uri)
case response
when Net::HTTPSuccess
return response
when Net::HTTPRedirection
return validate(response['location'])
else
return nill
end
end
puts validate('http://somesite.com/somedir/mypage.html')
谢谢,这是工作得更快。只是试图将其用于原始方法。 'case'在这种情况下会如何工作? – 2010-06-24 07:20:05
这与您的原始代码相同。 'res'是一个'Net :: HTTPResponse'对象,就像代码中的'response'一样。 – user85509 2010-06-24 07:31:13
虽然当我尝试更新对象时,我得到一个'NoMethodError'。 '验证':未定义的方法'主机'为#<字符串:0x100311360>(NoMethodError)' – 2010-06-24 07:48:13