我如何使用Ruby判断URL是否存在?

例如,对于URL

https://google.com

结果应该是truthy,但对于URL

https://no.such.domain

https://stackoverflow.com/no/such/path

结果应该是falsey

推荐答案

使用Net::HTTP库.

require "net/http"
url = URI.parse("http://www.google.com/")
req = Net::HTTP.new(url.host, url.port)
res = req.request_head(url.path)

此时res是包含请求结果的Net::HTTPResponse对象.然后,您可以判断响应代码:

do_something_with_it(url) if res.code == "200"

Note:要判断基于https的url,use_ssl属性应为true,如下所示:

require "net/http"
url = URI.parse("https://www.google.com/")
req = Net::HTTP.new(url.host, url.port)
req.use_ssl = true
res = req.request_head(url.path)

Ruby相关问答推荐

如何将包含换行符(和可能其他特殊字符)的Ruby字符串转义为有效的shell变量值?

Ruby - 使用索引值识别和更新数组中的重复项

如何使用 gsub 删除返回字符串中的/和/i?

查看 Savon 请求 XML 而不发送到服务器

Rubymine - 启用行号

用于 ruby​​ gems 的新 10.9 OSX 的命令行工具?

VCRProxy:在 Capybara 内使用 VCR 记录 PhantomJS ajax 调用

根据另一个数组的元素对数组进行排序

你喜欢哪种风格的 Ruby 字符串引用?

如何引用全局变量和类变量?

将Elastic search限制设置为无限制

升级到 Rubygems 1.5.0 后,Bundler 抛出未初始化的常量 Gem::SilentUI (NameError) 错误

计算文件中的行数而不将整个文件读入内存?

Lisp 和 Erlang 原子、Ruby 和 Scheme 符号.它们有多大用处?

gem 安装失败并出现 openssl 失败

默认情况下需要查找的路径是什么?

判断整数是否在范围内

向实例对象添加方法

将整个文本文件作为单个字符串读取的合理方法是什么?

*nix 是什么意思?