Рубин: HTTP.get_response с сайта, который не существует - PullRequest
2 голосов
/ 17 января 2011

У меня есть этот код, чтобы проверить, работает ли сайт или нет:

require 'net/http'
require 'uri'

res = Net::HTTP.get_response(URI.parse('http://www.saddsdsds.com/'))

case res
when Net::HTTPSuccess, Net::HTTPRedirection
  # OK
  puts "ok"
else
  puts "ok-error"
end

res2 = Net::HTTP.get_response(URI.parse('http://www.sads.com/'))


case res2
when Net::HTTPSuccess, Net::HTTPRedirection
  # OK
  puts "ok"
else
  puts "ok-error"
end

Тем не менее, код работает хорошо, когда сайт известен, но когда сайт неизвестен (как в примере res),код разрывается с помощью этой ошибки:

`initialize': getaddrinfo: nodename nor servname provided, or not known (SocketError)

Как это исправить, чтобы, если адрес не существует, код не нарушался?

Кроме того, это лучший способ проверитьесли сайт в сети?

Спасибо

1 Ответ

3 голосов
/ 17 января 2011

Окружите весь этот код блоком begin..rescue:

begin
   ...
rescue SocketError => e
   puts "SocketError occurred: " + e
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...