2013-03-08 17 views
10

Ho questa semplice funzione per ottenere pagine HTML e restituirle come stringa; anche se a volte ottengo un 404. Come posso restituire la stringa HTML solo se la richiesta ha avuto successo e restituire qualcosa come BadRequest quando si tratta di un codice di errore 404 o di qualsiasi altro?Codice stato risposta Web

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

Catch the 'WebException' vedere cosa viene restituito .. –

risposta

23

Si potrebbe prendere il 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; 
    } 
} 

Naturalmente sarebbe più appropriato per intercettare questa eccezione nel codice chiamante e nemmeno tentare di analizzare il codice HTML invece di mettere il try/catch nella funzione stessa.

Problemi correlati