Je crée une application pour la récupération de données à partir de la page Web. La page est protégée par un mot de passe et lorsque l'utilisateur se connecte, le cookie est créé.comment utiliser les cookies avec HttpWebRequest
Afin de récupérer les données, l'application doit d'abord se connecter: effectuer une requête Web avec nom d'utilisateur et mot de passe et stocker le cookie. Ensuite, lorsque le cookie est stocké, il doit être ajouté dans les en-têtes de toutes les demandes.
est la méthode ici qui fait la demande et récupère le contenu:
public void getAsyncDailyPDPContextActivationDeactivation()
{
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(dailyPDPContextActivationDeactivation);
IAsyncResult asyncResult = httpWebRequest.BeginGetResponse(null, null);
asyncResult.AsyncWaitHandle.WaitOne();
using (HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.EndGetResponse(asyncResult))
using (StreamReader responseStreamReader = new StreamReader(httpWebResponse.GetResponseStream()))
{
string responseText = responseStreamReader.ReadToEnd();
}
}
Est-ce que quelqu'un sait comment modifier cette méthode afin d'ajouter un cookie dans l'en-tête?
Ci-dessous est l'écran d'impression de la structure d'en-tête de la demande avec le navigateur:
alt text http://img404.imageshack.us/img404/4793/cookiea.jpg
Je serais également reconnaissant si quelqu'un a suggéré un moyen de stocker cookies de la réponse (lorsque les marques d'application une requête http: xxx.xxx.xxx/login? username = xxx & password = xxx le cookie est créé et doit être stocké pour les demandes futures).
Je ne comprends pas vraiment. Pourquoi mettre un cookiecontainer fraîchement créé (donc vide) dans la requête que vous êtes sur le point d'envoyer? Ne devrait-il pas être beaucoup plus logique que vous devez remplir ce cookieContainer plus tard avec la réponse? Y a-t-il une raison pour laquelle c'est comme ça? edit: Beaucoup de réponses sont données de cette façon, mais je n'arrive pas à comprendre pourquoi c'est ainsi. – deltu100
Mon application a un comportement indésirable en utilisant cela. L'utilisation de httpWebRequest2.Headers.Set ("Cookie", ... fonctionne correctement.) – Eduardo
Si j'ai déjà ouvert une session sur la page Web, un cookie est stocké sur ma HD afin que je puisse ignorer la connexion par programmation. la requête web recherche et remplit automatiquement le fichier contenant les cookies trouvés, ou est-ce que vous devez le faire manuellement? Comment faire cela, si ce dernier? –