9
votes

Obtenir une erreur "Le serveur distant renvoyé une erreur: (403) interdit" lorsque l'écran gratte à l'aide de httpwebrequest.getresponse ()

Nous avons un outil qui vérifie si une URL donnée est une URL en direct. Si une URL donnée est en direct une autre partie de notre logiciel peut afficher le contenu de celui-ci.

Ceci est mon code pour vérifier si une URL est en direct P>

    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;
    }


0 commentaires

3 Réponses :


13
votes

Il s'est avéré que tout ce que je devais faire était suivant

            webRequest.Accept = "*/*";
            webResponse = webRequest.GetResponse();


7 commentaires

Bonjour @syed, je suis confronté au même problème et j'ai déjà ajouté le code .accept, mais j'ai toujours eu cette erreur. Des idées? Merci


Je l'ai obtenu, je dois ajouter ces trois lignes, `webrequest.method =" get "; webrequest.useragent = "foo"; webrequest.accept = "Text / html"; `Différent serveur peut nécessiter une configuration différente


Merci swdev. Votre conseil semble résoudre le problème avec certaines pages Wikipedia.


@swdev: Merci. Il me manquait la ligne webrequest.useragent.


Voyant à nouveau cette page et je suis heureux que certains boursiers gagnent profit de mes conseils :)


Pour moi n'aide pas


Spot sur merci Mate! Travaillé comme un charme. Pourquoi ce n'est pas encore une réponse.



0
votes

Je pense qu'il y a beaucoup de problèmes similaires qui dépendent de l'application Server. Dans mon cas particulier, voir: Le serveur distant renvoyé une erreur : (403) Interdit


0 commentaires

0
votes

i fixe strong> pour mon web raclage forte> APP après avoir fait face à ce problème pendant la journée, j'espère que cela pourrait aider les autres:

    public static string GetPageContent(string url)
    {
        CookieContainer cookieContainer = new CookieContainer();
        HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.CookieContainer = cookieContainer; // after Create() method
        request.AllowAutoRedirect = true; //  should be true
        request.UserAgent= ".NET Framework Test Client"; // should not be null

        var responseStr = string.Empty;
        using (var response = request.GetResponse())
        {
            Stream dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            responseStr = reader.ReadToEnd();
            reader.Close();
            dataStream.Close();
        }
        return responseStr;
    }


0 commentaires