[webClient] connexion keep alive [Résolu]

nagaD.scar 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 3 mars 2014 à 16:02 - Dernière réponse : nagaD.scar 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention
- 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
Afficher la suite 

Votre réponse

1 réponse

nagaD.scar 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 3 mars 2014 à 16:53
0
Merci
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;
		}
	}
Commenter la réponse de nagaD.scar

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.