[c#] Website erreichbar

ineedinput

Grünschnabel
Hallo!
Das ist mein erster Post hier, deshalb schon mal:
Guten Morgen an alle ;)
Ich lerne seit ca. 2 Wochen sehr intensiv C#, bin also noch Anfänger und habe ein Frage :)

Zu meiner Frage:
Ich möchte nur prüfen ob eine Website erreichbar oder aufrufbar ist bzw. ob eine "Unterseite" besteht!
Beispiel:
http://www.site.com/ = erreichbar
Anfrage:
http://www.site.com/verschicken.php = ist auf dem Server vorhanden oder nicht?

Meine Idee:
Die zu prüfenden "Unterseiten" sind in einem Array gespeichert und werden dann an die URL angehängt. Habe mich mit "Webclient" beschäftigt aber komme einfach nicht weiter.
Kleine Hilfe wäre toll!
Dankeschön (:

lg ineedinput
 
Hallo,

willkommen im Forum.
Ich würde mit einem HttpWebRequest (GET) arbeiten.

C#:
using System;
using System.Net;

.......

string url = "http://www.site.com";  //hier geht auch http://www.site.com/verschicken.php
HttpWebRequest HttpReq = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response;
try
{
      response = (HttpWebResponse)HttpReq.GetResponse(); // hier kracht es, wenn eine Seite nicht erreichbar ist
}
catch (WebException ex)  
{
      // Fehlermeldung und/oder andere Informationen zum Fehler ausgeben
      Console.WriteLine(ex.Message);
      Console.WriteLine(ex.StackTrace);
}
....
 
Zuletzt bearbeitet:
Hallo und willkommen im Forum,

du musst eigentlich nur eine HTTP GET Anfrage an den Server schicken, dieser antwortet mit Status-Code und Inhalt. Jetzt musst du nur den Status-Code vergleichen, 200 heißt alles Ok, 404 ist Seite nicht gefunden und so weiter.

gruß
 
Wenn der Server nicht erreichbar ist, bricht das Programm ab, kann ich das Programm trotzdem weiter ausführen und den Status in eine Textbox schreiben? Müsste doch möglich sein.

Continue?
 
Wie genau das bei C# funktionert kann ich dir leider nicht sagen, ich habe es nur mal mit Java gemacht.

Es sollte aber eine Möglichkeit geben, den Status-Code abzufragen ohne Exceptions. Dabei macht es aber denke ich auch einen Unterschied ob der Server nicht vorhanden ist, oder ob die Datei auf ihm nicht vorhanden ist => 404.

Gruß
 
Hallo,

ohne Exception geht es in C# nicht.
Den Status kannst du so prüfen.

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

HttpWebResponse response;
try
{
     response = (HttpWebResponse)HttpReq.GetResponse();
     // Console.WriteLine(response.StatusCode);
     // Console.WriteLine(response.StatusDescription);
}
catch (WebException ex)
{
     response = (HttpWebResponse)ex.Response;
     // Console.WriteLine(response.StatusCode);
     // Console.WriteLine(response.StatusDescription);               
}

if (response.StatusCode == HttpStatusCode.NotFound)                
     Console.WriteLine("Seite nicht gefunden.");
if (response.StatusCode == HttpStatusCode.OK)
     Console.WriteLine("Seite gefunden.");

Du kannst natürlich noch auf andere StatusCodes prüfen,
schau einfach mal was dir HttpStatusCode so zur Verfügung stellt.
 
Zurück