Laden...

Prüfen, ob Webseite existiert

Erstellt von toaster vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.777 Views
Thema geschlossen
T
toaster Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren
Prüfen, ob Webseite existiert

Hallo,

ich habe mal wieder ein Problem ...

Vorweg erst mal: Ich weiß, dieses Thema wurde mehrmals behandelt (sowohl hier, als auch sonst irgendwo im Internet)! Ich habe jedoch nichts gefunden, was mir speziell bei meinem Problem hilft.

Mein Problem: Ich möchte lediglich mit folgendem Code prüfen, ob eine Webseite existiert:


HttpWebRequest HttpReq = (HttpWebRequest)WebRequest.Create("http://www.googl.de");

            HttpWebResponse response;
            try
            {
                response = (HttpWebResponse)HttpReq.GetResponse();
            }
            catch (WebException ex)
            {
                response = (HttpWebResponse)ex.Response;
                MessageBox.Show(response.StatusCode.ToString()); //Fehlermeldung
            }

            if (response.StatusCode == HttpStatusCode.NotFound)
                MessageBox.Show("Seite nicht gefunden.");
            if (response.StatusCode == HttpStatusCode.OK)
                MessageBox.Show("Seite gefunden.");

Schön und gut, wenn die Webseite existiert. Wenn die Seite jedoch nicht existiert und ich z.B. einen 404-Error abfangen möchte, bekomme eine NullReferenceException mit > Fehlermeldung:

"Der Remotename konnte nicht aufgelöst werden: 'www.googl.de'" .

Ich suche schon seit Stunden meinen Fehler, kann aber nichts finden ... Bitte um Hilfe.

Danke!

1.029 Beiträge seit 2010
vor 11 Jahren

Hi,

ich könnte dich jetzt auf die FAQ verweisen - aber:
Ich weiß nicht wie du Stunden gebraucht hast um den Feher zu finden - wirf doch bitte einfach den Debugger an, kuck in welcher Zeile das verursacht wird und prüfe an entsprechender Stelle auf NULL...

LG
Achim

T
toaster Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Hallo Taipi88,

danke für deine Antwort.

Es ist logisch an entsprechender Stelle auf Null zu prüfen.
Allerdings hilft mir das nicht weiter, den StatusCode zu bekommen, sondern umgeht nur die Fehlermeldung.

Ich verstehe einfach nicht, warum ich keinen StatusCode aus der WebException bekomme!?

Lg
toaster

C
1.214 Beiträge seit 2006
vor 11 Jahren

Du kriegst keinen Response. Es gab ja auch keine Anfrage. Die Adresse konnte nicht aufgelöst werden, also gibt es auch keine Anfrage, keine Antwort, und keinen HTTP Error Code.

T
toaster Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Hm ...
Blöde Frage, aber ich dachte mit


HttpWebRequest HttpReq = (HttpWebRequest)WebRequest.Create("http://www.googl.de");

stelle ich eine Anfrage!?

Hat ja bei existierenden Adressen (z.B. google.de) auch funktioniert ...

C
1.214 Beiträge seit 2006
vor 11 Jahren

Du erstellst erstmal nur die Instanz einer Klasse. Ob es wirklich zu einer HTTP Anfrage kommt, ist eine andere Frage. Dazu muss nämlich zuerst die Adresse aufgelöst werden. Wenn das nicht geht, ist das ein DNS Fehler und hat nichts mit HTTP zu tun, soweit kommt es gar nicht. Wenn DNS die Adresse auflösen kann, kann es trotzdem noch passieren, dass die Anfrage nicht gesendet werden kann, weil der host nicht erreichbar ist oder sonst was.
Du musst hier zwischen Http Fehlern und sonstigen Netzwerkfehlern unterscheiden.

T
toaster Themenstarter:in
6 Beiträge seit 2012
vor 11 Jahren

Hallo Coder007,

danke für deine Antwort. 👍 Das hat etwas Licht in die Sache gebracht und mir sehr weiter geholfen!

LG
toaster

Hinweis von MarsStein vor 11 Jahren

Der Unterschied zwischen DNS und HTTP gehört allerdings zu den Grundlagen, wären diese ausreichend bekannt, wäre auch die Fehlermeldung aus dem ersten Beitrag klar verständlich.

Thema geschlossen