[webClient] connexion keep alive

Résolu
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - Modifié par nagashima le 3/03/2014 à 16:03
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 3 mars 2014 à 16:53
salut à tous !

Bon je pense que le titre est parlant pour ceux qui connaissent. J'ai donc un petit soucis pour me logger en utilisant webClient : je ne parviens à faire ma connexion.
J'essaye donc de comprendre ce que j'envois qui poserai problème, et j'ai une différence : j'envoi "Expect: 100-continue", soit qu'apparemment je n'ai pas fini d'envoyer mes infos.

J'essaye donc de palier ce problème mais sans succès. Voici mon code de connexion (les éléments de connexion étant masqué) :


 CookieContainer cc = new CookieContainer();
 WebClient cl = new WebClient();
 cl.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36";
 cl.Headers["Accept"] = "*/*";

 NameValueCollection collection = new NameValueCollection();
 collection.Add("Email", "mail@domain.fr");
 collection.Add("Password", "mdp");

 String content = Encoding.UTF8.GetString(cl.DownloadData(new Uri("http://portail.com")));

 cc.SetCookies(new Uri("http://epsiportal.com/Site/SAAB/"), cl.ResponseHeaders.Get("Set-Cookie"));
 cl.Headers.Set(HttpRequestHeader.Cookie, cc.GetCookieHeader(new Uri("http://portail.com")));

 cl.Headers["User-Agent"] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36";
 cl.Headers["Accept"] = "*/*";
 cl.Headers["Origin"] = "http://portail.com";
 cl.Headers["Referer"] = "http://portail.com/Account/LogOn";

 
 content = Encoding.UTF8.GetString(cl.UploadValues(new Uri("http://portail.com"/Account/LogOn"), "POST", collection));


//-->c 'est la derniere ligne qui pose "problème"


j'ai essayé de surcharger web client :



 public class WebClientKeepAlive : WebClient
 {
  protected override WebRequest GetWebRequest(Uri address)
  {
   var request = base.GetWebRequest(address);
   if (request is HttpWebRequest)
   {
    ((HttpWebRequest)request).KeepAlive = true;
   }

   return request;
  }
 }

et donc en utilisant l'objet surchargé, mais seul le premier appel fonctionne.

Quelqu'un pourrai il m'éclairer ?

merci d'avance

naga

1 réponse

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 17
3 mars 2014 à 16:53
j'ai trouvé pour désactiver ce expect, mais je ne parviens pas à forcer le keepAlive

	public class WebClientKeepAlive : WebClient
	{
		protected override WebRequest GetWebRequest(Uri address)
		{
			var request = base.GetWebRequest(address);
			if (request is HttpWebRequest)
			{
				((HttpWebRequest)request).KeepAlive = true;
				((HttpWebRequest)request).ServicePoint.Expect100Continue = false;
			}

			return request;
		}
	}
0
Rejoignez-nous