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!
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
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
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.
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 ...
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.
Hallo Coder007,
danke für deine Antwort. 👍 Das hat etwas Licht in die Sache gebracht und mir sehr weiter geholfen!
LG
toaster
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.