Bonjour,
Je developpe une application C#, je voudrais lire un fichier se situant sur un site, mais pour lire ce fichier je dois m'authentifier sur le site.
Donc comment m'authentifier (me loguer) sur le site en c# ?
Merci de votre aide
Bonjour,
Je developpe une application C#, je voudrais lire un fichier se situant sur un site, mais pour lire ce fichier je dois m'authentifier sur le site.
Donc comment m'authentifier (me loguer) sur le site en c# ?
Merci de votre aide
Tu peux y arriver HttpWebRequest.
Il faudrait voir dans le code de la page HTML avec le login quel l'URL de la form ainsi que le nom des parametres de la form.
Après, tu crée une requête POST avec HttpWebRequest en passant les paramètres et leur valeurs.
Un exemple ici :
http://www.netomatix.com/httppostdata.aspx
Selon ta réponse il faudrait que je scrute la page Html de login, c'est ca ?
En plus de la méthode proposée par EquinoxeDotNet ci-haut et que je n'arrive pas à utiliser pour le moment.
je crois que le lien ci-dessous montrent une autre méthode mais je n'ai pas non plus de test fonctionnel avec cette méthode :
Lien :
http://www.4guysfromrolla.com/articles/102605-1.aspx
Merci de m'aider car je suis solidement bloqué la dessus!
Ma réponse est pour un login via forms (comme developpez.com par exemple). Ton lien, c'est avec des credential. C'est un tout autre système.
Dans mon cas, voila un code qui va te permettre de te connecter à Developpez.com (juste ajouter ton user et password):
La ligne "ServicePointManager.Expect100Continue = false;" est importante car .NET met par défaut le Expect à 100 et souvent ça fait foirer parce que le serveur ne répond pas par 100.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 private void Button_Click(object sender, RoutedEventArgs e) { ServicePointManager.Expect100Continue = false; var username = ""; // ajouter username & password var password = ""; var encoding = new ASCIIEncoding(); var requeststring = "vb_login_username={0}&vb_login_password=&s=&securitytoken=guest&do=login&vb_login_md5password={1}&vb_login_md5password_utf={1}"; var postData = string.Format(requeststring, username, MD5encoding(password)); var data = encoding.GetBytes(postData); // Prepare web request... var myRequest = (HttpWebRequest)WebRequest.Create("http://www.developpez.net/forums/login.php?do=login"); myRequest.Accept = "*/*"; myRequest.Referer = ""; myRequest.Expect = ""; myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = data.Length; myRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"; var newStream = myRequest.GetRequestStream(); // Send the data. newStream.Write(data, 0, data.Length); newStream.Close(); var rep = myRequest.GetResponse(); } private string MD5encoding(string toencode) { var encoding=new System.Text.UTF8Encoding(); var sb = new StringBuilder(); var md5 = new MD5CryptoServiceProvider(); var hash = md5.ComputeHash(encoding.GetBytes(toencode)); foreach (byte hex in hash) sb.Append(hex.ToString("x2")); return sb.ToString(); }
Comme tu vois ici j'ai du faire un hashing par MD5 du password, car celui-ci n'est (heureusement) pas envoyé en clair.
Pour voir quelle est la requete envoyée je conseille Fiddler (http://www.fiddler2.com/fiddler2/) un outil que tout web developeur se doit de métriser (sauf si ça ne dérange pas de perdre du temps). Logge toi su le site que tu veux, et tu va voir dans Fiddler la requete, avec tous les paramètres envoyés.
Il me manquait des parametres sur la requête. Fiddler va me servir !
MERCI
![]()
Partager