簡體   English   中英

使字符串中的URL可被Ruby的Net :: HTTP使用

[英]Making a URL in a string usable by Ruby's Net::HTTP

需要為Ruby的Net:HTTP提供完整的URL,以便其連接到服務器並正確獲取文件。 “完整URL”是指包含http://部分和后跟斜杠(如果需要)的URL。 例如, Net:HTTP不會連接到如下所示的URL: 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)
}

如果僅按示例代碼顯示的那樣進行操作,則Open-URI將是一種更簡單的方法。

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

這將對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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM