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)
}
答案 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)