J’essaie de me connecter à un site Web via mon application. Ce que j’ai fait:
J’ai d’abord compris comment le navigateur effectue le processus d’autorisation avec Fiddler. J’ai examiné comment la requête POST est construite et j’ai essayé de la reconstruire. Le navigateur envoie 4 cookies (Google Analytics) et j’ai essayé de les configurer:
CookieContainer gaCookies = new CookieContainer(); gaCookies.Add(new Cookie("__utma", "#########.###########.##########.##########.##########.#")); gaCookies.Add(new Cookie("__utmb", "#########.#.##.##########")); gaCookies.Add(new Cookie("__utmc", "#########")); gaCookies.Add(new Cookie("__utmz", "#########.##########.#.#.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"));
(vient de remplacer les données de cookie d’origine par #)
Ensuite, j’ai parcouru le code avec le débogueur et dès que le premier gaCookies.Add est exécuté, l’application s’arrête avec un
System.ArgumentException: The parameter '{0}' cannot be an empty ssortingng. Parameter name: cookie.Domain
Je voudrais savoir pourquoi cela se produit. Le constructeur de Cookie ne nécessite pas de domaine et je ne sais pas où je peux obtenir cette valeur?
Ce serait très bien si quelqu’un d’entre vous pouvait m’aider avec ça.
Je ne suis ni un développeur Web ni un expert en matière de Web, donc je ne sais pas grand chose à ce sujet.
Existe-t-il une excellente source d’information à ce sujet s’il n’ya pas de “réponse courte et rapide”?
CookieContainer
s peut contenir plusieurs cookies pour différents sites Web. Par conséquent, une étiquette (le domaine) doit être fournie pour lier chaque cookie à chaque site Web. Le domaine peut être défini lors de l’instanciation des cookies individuels, de la manière suivante:
Cookie chocolateChip = new Cookie("CookieName", "CookieValue") { Domain = "DomainName" };
Un moyen simple d’accéder au domaine consiste à créer un Uri
(si vous n’en utilisez pas déjà) contenant votre adresse URL cible et à définir le domaine du cookie à l’aide de la propriété Uri.Host
.
CookieContainer gaCookies = new CookieContainer(); Uri target = new Uri("http://www.google.com/"); gaCookies.Add(new Cookie("__utmc", "#########") { Domain = target.Host });