Eine Beispielimplementierung könnte folgendermaßen aussehen:
[ruby]
require ‚open-uri‘
require ’net/http‘
def existiert_url?(url)
url = URI.parse(url)
begin
Net::HTTP.start(url.host, url.port) do |http|
# An dieser Stelle kann bei Bedarf auch auf
# andere Response-Codes geprüft werden
return http.head(url.request_uri).code == "200"
end
rescue SocketError => se
# Fehlerbehandlung, wenn die Domain nicht existiert
# Je nach Applikation kann hier die entsprechende Aktion durchgeführt werden
rescue
# Alle anderen Fehlerfälle werden/können hier behandelt werden
end
end
[/ruby]
Danach kann die Existenz einer URL geprüft werden:
[ruby]
existiert_url? "http://www.rubyonrails.de/"
# => true: Die Startseite existiert
existiert_url? "http://www.rubyonrails.de/tag/rails-3/"
# => true: Es gibt eine Unterseite mit Artikeln/Tags zu Rails 3
existiert_url? "http://www.rubyonrails.de/GIBT-ES-NICHT"
# => false: Diese Unterseite existiert nicht
[/ruby]
Hallo,
schönes Script, jedoch laufe ich immer auf folgenden Fehler, wenn ich eine URL eingebe die nicht existiert. Gibt es eine saubere Möglichkeit das abzufangen?
getaddrinfo: nodename nor servname provided, or not known
Danke.
Hallo eller82,
das Script hatte nur URLs von bekannten Domains geprüft, aber dies muss nicht immer gegeben sein. Daher habe ich es angepasst. In der neuen Version werden nun ggf. Fehler abgefangen und können nach Bedarf behandelt werden.
Viele Grüße
derKaan
Vielen Dank. Damit klappt es wunderbar.