2011-09-17 2 views
1
racler

page avec https://livingsocial.comracler page web asp.net avec https://livingsocial.com

Je travaille actuellement avec le code suivant.

ce code envoie une demande d'authentification de l'utilisateur, mais la page Web ne valide pas l'utilisateur.

 string appURL = "https://livingsocial.com/deals/external_people/login"; 

     string strPostData = String.Format("login={0}&password={1}","[email protected]", "03006403836"); 

     // Setup the http request. 
     HttpWebRequest wrWebRequest = WebRequest.Create(appURL) as 
     HttpWebRequest; 
     //old code 
     wrWebRequest.ContentType = "application/x-www-form-urlencoded"; 
     wrWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"; 
     wrWebRequest.Method = "POST"; 
     wrWebRequest.ContentLength = strPostData.Length; 
     wrWebRequest.ContentType = "application/x-www-form-urlencoded"; 
     CookieContainer cookieContainer = new CookieContainer(); 
     wrWebRequest.CookieContainer = cookieContainer; 

     // Post to the login form. 
     StreamWriter swRequestWriter = new 
     StreamWriter(wrWebRequest.GetRequestStream()); 
     swRequestWriter.Write(strPostData); 
     swRequestWriter.Close(); 

     // Get the response. 
     HttpWebResponse hwrWebResponse = (HttpWebResponse)wrWebRequest.GetResponse(); 

     // Read the response 
     StreamReader srResponseReader = new 
     StreamReader(hwrWebResponse.GetResponseStream()); 
     string strResponseData = srResponseReader.ReadToEnd(); 

Répondre

1

Le conteneur de cookies doit être utilisé avec le prochain message. Seulement alors vous auriez l'effet d'être connecté.

+0

comment puis-je utiliser cookie container pour la prochaine demande dites-moi avec le codage. – Wasif

1

Vous avez déjà fait la partie difficile en créant une variable séparée pour votre conteneur.

CookieContainer cookieContainer = new CookieContainer(); 
wrWebRequest.CookieContainer = cookieContainer; 

Tout comme Hasan indique que vous devez simplement garder le transmettre avec chaque demande.

var newRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.mysite.com/"); 
newRequest.CookieContainer = cookieContainer; 

var yetAnotherRequest = (HttpWebRequest)HttpWebRequest.Create("http://www.anothersite.com/"); 
yetAnotherRequest.CookieContainer = cookieContainer; 

Cela permettra de préserver les cookies, et plus que probablement votre session, à travers chaque demande ultérieure.

+0

je reçois les cookies et économisons comme ça. foreach (Cookie c dans hwrWebResponse.Cookies) { myContainer.Add (c); } et d'utiliser dans une nouvelle demande comme ça, mais aucune réponse était là. HttpWebRequest wrWebRequest1 = WebRequest.Create (appURL) en tant que HttpWebRequest; wrWebRequest1.ContentType = "application/x-www-form-urlencoded"; wrWebRequest1.UserAgent = "Mozilla/4.0 (compatible, MSIE 7.0, Windows NT 5.1, .NET CLR 1.1.4322, .NET CLR 2.0.50727, .NET CLR 3.0.04506.648, .NET CLR 3.5.21022)"; wrWebRequest1.CookieContainer = monContainer; – Wasif

+0

@Wasif, il n'est pas nécessaire de parcourir les cookies et de les ajouter à votre conteneur. Si vous inspectez votre conteneur entre les appels, vous remarquerez que tous les cookies sont là. Vous devez simplement continuer à passer le conteneur avec chaque demande. – Josh