2013-03-08 15 views
10

Mam tę prostą funkcję, aby uzyskać strony HTML i zwrócić je jako ciąg znaków; choć czasami dostaję 404. Jak mogę zwrócić ciąg znaków HTML tylko wtedy, gdy żądanie zakończyło się sukcesem i zwrócić coś podobnego do BadRequest, gdy jest to 404 lub jakikolwiek inny kod statusu błędu?Kod stanu odpowiedzi sieciowej

public static string GetPageHTML(string link) 
{ 
    using (WebClient client= new WebClient()) 
    { 
     return client.DownloadString(link); 
    } 
} 
+2

Złap 'WebException' Zobacz, co jest zwracane .. –

Odpowiedz

23

Można złapać WebException:

public static string GetPageHTML(string link) 
{ 
    try 
    { 
     using (WebClient client = new WebClient()) 
     { 
      return client.DownloadString(link); 
     } 
    } 
    catch (WebException ex) 
    { 
     var statusCode = ((HttpWebResponse)ex.Response).StatusCode; 
     return "An error occurred, status code: " + statusCode; 
    } 
} 

Oczywiście byłoby bardziej właściwe, aby złapać ten wyjątek w kodzie wywołującym i nie próbuje nawet analizować html zamiast stawianie try/catch w samej funkcji.

Powiązane problemy