Laden...

WebRequest 404 Error trotz WebException

Erstellt von Tholi vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.023 Views
T
Tholi Themenstarter:in
18 Beiträge seit 2009
vor 12 Jahren
WebRequest 404 Error trotz WebException

Moin Leute,

brauche mal einen Denkanstoß.

Code:


try {
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
                request.Proxy = null;
WebResponse response = request.GetResponse();
}
catch (WebException ex)
            {
                return "404";
            }

Bei dem response kann es dazu kommen, dass die url nicht erreichbar ist. Compiler haut mir dann eine 404 Fehlermeldung raus.
Leider greift die WebException nicht so wie ich möchte, bzw. catch'ed diese nicht.

Freue mich auf Ansätze und Hinweise!

G
538 Beiträge seit 2008
vor 12 Jahren

Naja - so gesehen ist ja keine Exception aufgetreten, sondern du hast eine Antwort vom Server bekommen - diese lautet: "Was du da willst, gibt es hier nicht"
Selbiges findest du im Status vom HttpWebResponse wieder.

//edit: WebResponse hat keinen Status, aber HttpWebResponse

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

T
Tholi Themenstarter:in
18 Beiträge seit 2009
vor 12 Jahren

Stimmt dort gibt es dir Statuscode's, wie kann ich diese denn abfangen, habs wie folgt probiert:



if (((HttpWebResponse)request.GetResponse).StatusCode.ToString() == "404")

Leider hab ich den gleichen Fehler wieder.

16.834 Beiträge seit 2008
vor 12 Jahren

Du machst das irgendwie alles andere als elegant; folgendes sollte gehen ( ungetestet ):

WebRequest request = WebRequest.Create( meineUrl );

using ( HttpWebResponse response = ( HttpWebResponse ) request.GetResponse() )
{
    switch ( response.StatusCode )
    {
        case HttpStatusCode.NotFound: /* 404 */
            {
                // nicht gefunden
            }
            break;
        case HttpStatusCode.OK: /* 200 */
            {
                // alles paletti
            }
            break;
        default:
            {
                Console.WriteLine( string.Format( "Status Code: {0}", ( int ) response.StatusCode ) );
            }
        break;
    }
}