在Ruby的Net :: HTTP可用的字符串中创建URL

时间:2011-05-11 23:05:16

标签: ruby url

Ruby的Net:HTTP需要获得一个完整的URL,以便它连接到服务器并正确获取文件。 “完整URL”是指包含http://部分的URL和需要它的尾部斜杠。例如,Net:HTTP不会连接到这样的网址:example.com,但会很好地连接到http://example.com/。有没有办法确保URL是完整的URL,如果不是,则添加所需的部分?

编辑:这是我正在使用的代码:

parsed_url = URI.parse(url)
req = Net::HTTP::Get.new(parsed_url.path)
res = Net::HTTP.start(parsed_url.host, parsed_url.port) {|http|
  http.request(req)
}

2 个答案:

答案 0 :(得分:2)

如果这只是示例代码所显示的内容,那么Open-URI将是一种更简单的方法。

require 'open-uri'
res = open(url).read

答案 1 :(得分:1)

这将对http / https进行简单的检查:

if !(url =~ /^https?:/i)
  url = "http://" + url
end

这可能是处理多种协议(ftp等)的更通用的方法

if !(url =~ /^\w:/i)
  url = "http://" + url
end

为了确保parsed_url.path为您提供正确的值(当没有提供特定路径时它应为/),您可以执行以下操作:

req = Net::HTTP::Get.new(parsed_url.path.empty? ? '/' : parsed_url.path)