2010-11-26 1 views
3

Un moyen d'obtenir le code HTML d'une page Web même lorsque l'en-tête est défini sur 404? Certaines pages contiennent encore du texte, et dans mon cas, j'ai besoin de lire ce texte.Comment obtenir le code HTML d'une page en C# lorsque les en-têtes sont définis sur HTTP/1.0 404 Not Found

Exemple de code C# pour obtenir HTML:

public static string GetHtmlFromUri(string resource) 
     { 
      string html = string.Empty; 
      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(resource); //Errors here. 
      using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) 
      { 
       bool isSuccess = (int)resp.StatusCode < 299 && (int)resp.StatusCode >= 200; 
       if (isSuccess) 
       { 
        using (StreamReader reader = new StreamReader(resp.GetResponseStream())) 
        { 
         html = reader.ReadToEnd(); 
        } 
       } 
      } 
      return html; 
     } 

Et voici une page que j'ai créé pour tester cela avec 404 erreurs: http://bypass.rd.to/headertest.php
Si vous regardez dans l'en-tête, vous verrez que est un 404, mais le texte peut être lu. Maintenant, essayez d'obtenir la page en C# ...

MessageBox.Show(GetHtmlFromUri("http://bypass.rd.to/headertest.php")); 

System.Net.WebException was unhandled
Message="The remote server returned an error: (404) Not Found."
Source="System"
StackTrace: at System.Net.HttpWebRequest.GetResponse()

Répondre

4

L'exception contient le HttpWebResponse à partir de laquelle vous pouvez accéder à tout ce qui a été renvoyé. Voir this answer pour un exemple.

Questions connexes