Garder une session lorsque vous utilisez HttpWebRequest

Dans mon projet, j’utilise le client d’application C # et le serveur d’applications Web tomcat6. J’ai écrit cet extrait dans le client C #:

public bool isServerOnline() { Boolean ret = false; try { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL); req.Method = "HEAD"; req.KeepAlive = false; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); if (resp.StatusCode == HttpStatusCode.OK) { // HTTP = 200 - Internet connection available, server online ret = true; } resp.Close(); return ret; } catch (WebException we) { // Exception - connection not available Log.e("InternetUtils - isServerOnline - " + we.Status); return false; } } 

Chaque fois que j’appelle cette méthode, je reçois une nouvelle session côté serveur. Je suppose que c’est parce que je devrais utiliser des cookies HTTP dans mon client. Mais je ne sais pas comment faire ça, peux-tu m’aider?

Vous devez utiliser un CookieContainer et conserver l’instance entre les appels.

 private CookieContainer cookieContainer = new CookieContainer(); public bool isServerOnline() { Boolean ret = false; try { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(VPMacro.MacroUploader.SERVER_URL); req.CookieContainer = cookieContainer; // <= HERE req.Method = "HEAD"; req.KeepAlive = false; HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); if (resp.StatusCode == HttpStatusCode.OK) { // HTTP = 200 - Internet connection available, server online ret = true; } resp.Close(); return ret; } catch (WebException we) { // Exception - connection not available Log.e("InternetUtils - isServerOnline - " + we.Status); return false; } }