C# garder l'id de session sur httpwebrequest
J'ai besoin de conserver le même id de session lors de la navigation sur un site des pages à l'aide C#.Net (comme un robot). J'ai trouvé un couple de méthodes, un http sniffer est très pratique, pour comparer ce que mon navigateur IE a été l'envoi de données (requête HTTP) et de la réception par le serveur web (HTTP de la réponse), que les informations importantes sont dans les en-têtes (qui ne sont pas affichées par le navigateur).
Merci de ne pas faire la confusion entre l'id de session qui est public depuis le serveur vers le navigateur et le serveur de variables de session qui sont privés de code du serveur (comme php).
WebHeaderCollection headerCollection = new WebHeaderCollection();
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
/* save headers */
for (int i = 0; i < response.Headers.Count; i++)
{
headerCollection.Add(response.Headers.AllKeys[i], response.Headers.Get(i));
}
/* save cookies */
cookieContainer = new CookieContainer();
foreach (Cookie cookie in response.Cookies)
{
cookieContainer.Add(cookie);
}
}
de faire les autres requêtes GET ou POST:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
...
/* restore PHPSESSID */
for (int i = 0; i < headerCollection.Count; i++)
{
string key = headerCollection.GetKey(i);
if (key == "Set-Cookie")
{
key = "Cookie";
}
else
{
continue;
}
string value = headerCollection.Get(i);
request.Headers.Add(key, value);
}
/* restore cookies */
request.CookieContainer = cookieContainer;
/* complete request */
Stream writeStream = request.GetRequestStream()
Ma demande est de contribuer à un meilleur code, ou d'autres idées pour faire un meilleur robot session préserver.
- merci de faire un effort pour formater votre code. stackoverflow.com/editing-help
Vous devez vous connecter pour publier un commentaire.
Si vous créez un seul cookie contenant et l'affecter à la fois la première et la deuxième demande, vous n'aurez pas besoin de faire tout ce que le marinage sur la copie de cookies à partir de la réponse.
Lorsque les cookies sont définis par une réponse le cookie contenant qui est joint à la demande de recevoir et de stocker des cookies. Afin de maintenir le même contexte de session entre une série de demander simplement de maintenir un seul cookie contenant de l'instance et de l'utiliser à toutes les demandes.
Votre code devient:-
alors:-