Question

J'ai un programme assez simple qui prend une URL et crache le premier lieu vers lequel il redirige. Quoi qu'il en soit, je l'ai testé sur certains liens et j'ai constaté 400 erreurs sur certaines URL. J'ai essayé de tester de telles URL en les collant dans mon navigateur et cela a bien fonctionné.

    static string getLoc(string curLoc, out string StatusDescription, int timeoutmillseconds)
    {
        HttpWebRequest x = (HttpWebRequest)WebRequest.Create(curLoc);            
        x.UserAgent = "Opera/9.52 (Windows NT 6.0; U; en)";
        x.Timeout = timeoutmillseconds;            
        x.AllowAutoRedirect = false;
        HttpWebResponse y = null;
        try
        {
            y = (HttpWebResponse)x.GetResponse(); //At this point it throws a 400 bad request exception.
Était-ce utile?

La solution

Je pense que quelque chose de bizarre se passe avec les cookies. Il s'est avéré qu'en raison de la façon dont j'avais testé le lien, les cookies nécessaires à son fonctionnement appartenaient à mon navigateur, mais pas au lien. Il s'avère que certains des liens que je testais manuellement (lorsque les autres liens ont échoué) généraient des cookies.

C’est un peu compliqué ce qui s’est passé, mais la réponse courte est que mon navigateur avait des cookies, mais pas le programme. Conserver les cookies entre les redirections n’a pas résolu le problème.

Le problème sous-jacent est dû au fait que le lien que je teste nécessite un paramètre supplémentaire, un cookie ou les deux. J'essayais d'éviter les deux dans mes tests car le paramètre / cookie était destiné au suivi et je ne voulais pas interrompre le suivi.

En bref, je connais le problème, mais ce n’est pas un problème qui peut être résolu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top