Создание URL-адреса в строке, используемой Ruby's Net :: HTTP - PullRequest
0 голосов
/ 12 мая 2011

Ruby's Net:HTTP необходимо предоставить полный URL-адрес, чтобы он мог подключиться к серверу и получить файл должным образом. Под «полным URL» я подразумеваю URL, включающий в себя часть http:// и косую черту, если это необходимо. Например, 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)
}

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Если это только то, что показывает пример кода, Open-URI будет более простым подходом.

require 'open-uri'
res = open(url).read
1 голос
/ 12 мая 2011

Это будет сделать простую проверку для http / https:

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

Это может быть более общая проверка для нескольких протоколов (ftp и т. Д.)

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

InЧтобы убедиться, что parsed_url.path дает вам правильное значение (оно должно быть /, если не указан конкретный путь), вы можете сделать что-то вроде этого:

req = Net::HTTP::Get.new(parsed_url.path.empty? ? '/' : parsed_url.path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...