speedi57
Messages postés12Date d'inscriptionsamedi 12 janvier 2008StatutMembreDernière intervention26 septembre 2013
-
25 sept. 2013 à 00:11
nagaD.scar
Messages postés4271Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 2023
-
26 sept. 2013 à 12:12
Bonjour, a tous,
j'essaie actuellement de faire un petit programme qui sert a se connecter a un hotspot en entrant les identifiant automatiquement, pour se faire j'utilise le webbrowser , sauf que quand je veut le faire boucler pour qu'il recommence la connections pour être sur de pas la perdre, sauf que quand je le fais boucler la form ne s'ouvre put . Alors que quand il boucle pas sa marche sans problème
nagaD.scar
Messages postés4271Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 202316 25 sept. 2013 à 12:14
salut,
d'une part je suppose que tu appel cette fonction depuis ta classe d'interface, non implémenté dans un thread, et donc ton application se fige (graphiquement) => quand tu ne le fais qu'une fois, ca fais le traitement et met à jours ta fenêtre, et donc ton webBrowser. Pour palier à ca, appel ta fonction dans un thread. Mais il y a un truc qui va pas :
en général, lorsque tu est connecté et que tu redemande la page de login, on ne te renvois pas le formulaire de connexion. (OU on te le renvois, mais comme connecté => masqué, tu écris quand même tes info et redemande une connexion => le serveur n'apprécie peu-être pas).
Donc l'idée serai plutot de vérifier dans ta page si tu es connecté (en général tu peux t'appuyer sur des message type genre 'bienvenue,' ou 'Vous êtes connecté en tant que ..', etc. ou encore vérifier si tu à un champ de déconnexion), et dans ce cas là, ne pas réessayer de te connecter : quand tu navigue manuellement, tu ne te reconnecte pas à chaque page chargé (?).
Ce que tu dois faire, c'est avoir une méthode qui test si tu es connecté, et dans le cas ou tu est déco, appeler ta méthode de connexion (ne serais-ce que pour éviter de faire 10.000 appel inutil sur le serveur => en fonction de comment il est fait, tu risque un blacklistage)
nagaD.scar
Messages postés4271Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 202316 26 sept. 2013 à 12:12
d'accord tu as donc préféré utiliser un timer, pourquoi pas, ca fonctionne aussi ^^. Tu risque par contre de déclencher un test de connexion au milieu d'un traitement ... afin de l'éviter, écrirs plutot :
public void connect()
{
if(webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{
webBrowser1.Navigate("https://auth.univ-lorraine.fr/login?service=");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
var maconfig = ConfigurationManager.AppSettings;
string user = Properties.Settings.Default.user;
string pswd = Properties.Settings.Default.password;
HtmlDocument document = this.webBrowser1.Document;
string titre = document.Title;
if (titre == "CAS - Central Authentication Service")
{
document.GetElementById("username").SetAttribute("value", user);
document.GetElementById("password").SetAttribute("value", pswd);
document.GetElementById("submit").InvokeMember("SE CONNECTER");
document.GetElementById("submit").InvokeMember("click");
}
webBrowser1.Navigate("https://portail-crous.crous-nancy-metz.fr/authen-cas%3Furl%3DaHR0cDovL3d3dy5nb29nbGUuY29tLw%3D%3D%26authen%3DAA%3A%3AAuthen-CAS-UL%3A%3AAuthz-LDAP-UL");
}
timer1.Interval = 10000;
}
de cette manière, si ton webBrowser est déjà occupé, il réinitialiser simplement le timer ;).