Avoir d'Erreur “Le serveur distant a retourné une erreur: (403) Interdit” lors de la capture d'écran à l'aide de HttpWebRequest.GetResponse()
Nous disposons d'un outil qui vérifie si une URL est une URL. Si une url est de vivre une autre partie de notre logiciel peut écran de la ferraille le contenu.
C'est mon code pour vérifier si une url est vivre
public static bool IsLiveUrl(string url)
{
HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest;
webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5";
webRequest.CookieContainer = new CookieContainer();
WebResponse webResponse;
try
{
webResponse = webRequest.GetResponse();
}
catch (WebException e)
{
return false;
}
catch (Exception ex)
{
return false;
}
return true;
}
Ce code fonctionne parfaitement, mais pour un site hébergé sur un serveur apache, je suis une exception web avec le message suivant. "Le serveur distant a retourné une erreur: (403) Interdit"
Sur une inspection plus poussée, j'ai trouvé les informations suivantes dans le WebException objet
Statut="ProtocolError"
StatusDescription="Mauvais Comportement"
C'est l'entête de la requête "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5
Hôte: scenicspares.co.royaume-uni
Connection: Keep-Alive"
C'est l'en-tête de réponse "Keep-Alive: timeout=4, max=512
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
Date: Thu, 13 Jan 2011 10:29:36 GMT
Serveur: Apache"
J'ai extrait ces en-têtes à l'aide d'une montre dans vs2008. Le cadre de travail en cours d'utilisation est de 3,5.
OriginalL'auteur Syed Salman Akbar | 2011-01-13
Vous devez vous connecter pour publier un commentaire.
Il s'est avéré que tout ce que j'avais à faire était de suite
et il a été fixé.
Il a obtenu, je dois ajouter ces trois lignes, ` webRequest.Method = "GET"; webRequest.UserAgent = "Foo"; webRequest.Accepter = "text/html";` autre serveur peut nécessiter une installation à une autre
Grâce swdev. Votre astuce semble résoudre le problème, à quelques pages de wikipedia.
Merci. J'ai été absent de la webRequest.UserAgent ligne.
Juste de voir cette page, et je suis heureux que certains gars là l'avantage de mes conseils 🙂
OriginalL'auteur Syed Salman Akbar
Je crois qu'il y a beaucoup de problèmes similaires qui dépendent de l'application serveur. Dans mon cas particulier, voir: Le serveur distant a retourné une erreur: (403) Interdit
OriginalL'auteur Budda