J'essaie de créer une session HttpWebRequest/HttpWebResponse avec un site Web ASP.NET pour analyser plus tard un formulaire HTML via les paramètres url (cette partie je sais comment faire), mais je ne comprends pas comment analyser et définir un cookie tel que l'identifiant de session. Dans Fiddler, cela montre que l'ID de session ASP.NET est renvoyé via Set-Cookie dans la réponse à la requête au/path de l'URL, mais comment puis-je extraire cet ID de session et le définir comme cookie pour le prochain HttpWebRequest? ? Je comprends que cet en-tête Set-Cookie se trouve dans HttpWebResponse.Headers.Keys, mais existe-t-il un chemin direct pour l'analyser? Merci!Comment analyser HttpWebResponse.Headers.Keys pour un ID de session Set-Cookie retourné
Répondre
Le framework .NET gérera les cookies pour vous. Vous n'avez pas à vous soucier d'analyser les informations de cookie des en-têtes ou d'ajouter un en-tête de cookie à vos demandes.
Pour stocker et envoyer votre ID de session, utilisez les classes Cookie
et CookieContainer
pour les stocker, puis assurez-vous d'envoyer vos cookies à chaque demande.
L'exemple suivant montre comment procéder. Le CookieContainer, 'cookieJar
' peut être partagé entre plusieurs domaines et demandes. Une fois que vous l'ajoutez à un objet de requête, la référence à celui-ci sera également ajoutée à l'objet de réponse lorsque la réponse est renvoyée.
CookieContainer cookieJar = new CookieContainer();
var request = (HttpWebRequest)HttpWebRequest.Create("http://www.google.com");
request.CookieContainer = cookieJar;
var response = request.GetResponse();
foreach (Cookie c in cookieJar.GetCookies(request.RequestUri))
{
Console.WriteLine("Cookie['" + c.Name + "']: " + c.Value);
}
La sortie de ce code sera:
Cookie['PREF']: ID=59e9a22a8cac2435:TM=1246226400:LM=1246226400:S=tvWTnbBhK4N7Tlpu
Merci beaucoup! Cela m'aidera vraiment !!! Yay! :) –
J'ai implémenté ceci, et ça marche! Merci beaucoup. –
+1 Merci pour votre aide si appréciée! Je n'avais pas hâte d'analyser manuellement les en-têtes HTTP :) – jv42
La réponse de Dan Herbert m'a vraiment aidé. J'apprécie ton aide.
Je veux juste poster mon utilisation - j'espère que cela aidera quelqu'un à un moment donné. Mon exigence est que je dois renvoyer des cookies de la première réponse de poste http à la deuxième demande de poste http.
1er:
CookieContainer cookieJar = new CookieContainer();
request.CookieContainer = cookieJar;
....
CookieCollection setCookies = cookieJar.GetCookies(request.RequestUri);
2ème:
CookieContainer cc = new CookieContainer();
cc.Add(setCookies);
request.CookieContainer = cc;
hum je peux me tromper, mais de ce que j'observe ces derniers temps
Cookies d'une première réponse, ne comprennent pas le ' mettre cookie 'comme cookies qui viennent dans l'en-tête (par exemple un identifiant de session ...) dans le cas d'un statut 302 (redirection)
Si le autofollowredirect est réglé sur true, le cookie de jeu sont traitées et la demande ultérieure qui est fait automatiquement, comprendra ces cookies définis par cookie ensemble sur le premier appel
Si autofollowredirect est définie sur false alors la première demande ne reçoit pas les cookies positionnés par le cookie de jeu, et je suppose et c'est aussi mon queston si quelqu'un sait, que la seule façon d'avoir par la suite ces cookies dans la prochaine demande, est d'analyser les cookies?
J'ai rencontré des problèmes avec une redirection 302 et j'ai défini AllowAutoRedirect = false. Cela m'a donné une réponse "cette page a déménagé", mais ensuite je passe les cookies et redirige vers la page que je voulais aller en premier lieu. – Daryl
[Selon la RFC 6265] (http://tools.ietf.org/html/rfc6265#section-3) Les agents utilisateurs PEUVENT ignorer les en-têtes Set-Cookie contenus dans les réponses avec des codes d'état de 100 niveaux mais DOIVENT traiter Set-Cookie en-têtes contenus dans d'autres réponses (y compris les réponses avec 400- et les codes d'état de 500 niveaux). – Snives
J'ai le même problème (avec amazon) J'utilise l'expression régulière suivante:
string regexp = "(?<name>[^=]+)=(?<val>[^;]+)[^,]+,?";);
MatchCollection myMatchCollection = Regex.Matches(cookiesStr, regexp);
foreach (Match myMatch in myMatchCollection)
{
string cookieName = myMatch.Groups["name"].ToString();
string cookieVal = myMatch.Groups["val"].ToString();
Cookie cookie = new Cookie(cookieName, cookieVal);
cookies.Add(cookie);
}
Notez que je ne se soucient le nom du cookie/valeur ...
bonne chance Elia
C'est le type exact de solution que je recherche (l'objet WebBrowser fournit uniquement une chaîne pour le cookie). Cependant, votre code ne compile pas. – Nuzzolilo
- 1. Id de session changeant au hasard
- 2. setcookie ne fonctionne pas
- 3. Comment analyser un flux
- 4. PHP ne peut pas setcookie()
- 5. Outil pour analyser un fichier
- 6. Où puis-je 'setcookie' pour enregistrer http_referer dans Drupal 6?
- 7. difficultés pour obtenir un exemple de retourné simple au travail: problème # 34
- 8. Comment fournir un getter/setter ID de session personnalisé dans asp.net
- 9. Comment analyser un fichier .as (AS3)
- 10. Comment analyser un fichier .xfa
- 11. Comment analyser un flux vidéo
- 12. Comment analyser un fichier XML
- 13. Où sont stockés les ID de session sur le client
- 14. Ne pas Recréer la session id .net sessions de cookieless
- 15. setcookie ("user", "", time() - 3600) ne fonctionne pas
- 16. Comment utiliser TinyXml pour analyser un élément spécifique
- 17. nombre d'article retourné de .grep $()
- 18. Un ID de session est-il généré côté serveur ou côté client?
- 19. Comment utiliser Perl pour analyser Twitter XML?
- 20. regex pour analyser html
- 21. Comment capturer un état de session
- 22. Un maillage polygonal fermé est-il retourné?
- 23. API pour obtenir un ID unique iPhone?
- 24. Session pour un onglet dans ASP.NET
- 25. Analyser un langage simple pour le formatage de titre
- 26. propriété Id non peuplée
- 27. obtenir un ID d'attribut, défini comme un autre attribut ID
- 28. comment analyser les fichiers inf de Windows pour python?
- 29. comment ajouter html id aux rails form_tag
- 30. Réflexion - réglage Type d'obj retourné?
Vous êtes les bienvenus! –