Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Verificare l'accesso ad un sito web e KeyNotFoundException (parsing html)
Forum - C# / VB.NET - Verificare l'accesso ad un sito web e KeyNotFoundException (parsing html)

Avatar
Best (Normal User)
Rookie


Messaggi: 24
Iscritto: 12/09/2010

Segnala al moderatore
Postato alle 15:26
Domenica, 13/03/2011
Salve a tutti,
stavo seguendo la guida sul vb.net scritta da Totem (http://totemslair.org/guide/viewchapter.php?guida=vb&id=80). Tutto bene, riesco a loggarmi al mio sito web.
Ma ho riscontrato qualche problema. Premetto che per il login ho usato 2 textbox (una per l'username e una per la password, evitando così di inserire i dati nel codice sorgente). Se inserisco correttemente i dati accedo al mio sito normalmente, se provo ad inserire in modo errato i dati, ovviamente, mi dà l'errore dei dati sul sito. A questo punto, reinserisco i dati correttamente e mi da errore di gestione di KeyNotFoundException. Come risolvo?
Un' altra domanda, è possibile visualizzare direttamente sul programma che sto scrivendo se ho effettuato correttamente il login al sito?

Capisco che le domande sono piuttosto confusionali, ma ho difficolta nel spiegarmi, per altri chiarimenti chiedete pure, cercherò di spiegarmi meglio.
Grazie in anticipo.

Edit

Allora Totem,
questo è il source del programmino

Codice sorgente - presumibilmente VB.NET

  1. Class Form1
  2.     Dim LoginInfo As New Dictionary(Of String, Dictionary(Of String, String))
  3.     Dim TInfo As New Dictionary(Of String, String)
  4.  
  5.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  6.         LoginInfo.Add("http://linuxlabs.altervista.org/index.php?option=com_content&view=frontpage&Itemid=1", TInfo)
  7.     End Sub
  8.  
  9.     Private Sub btnAction_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAction.Click
  10.         Dim Info As Dictionary(Of String, String) = LoginInfo(wbBrowser.Url.ToString())
  11.         With TInfo
  12.             .Add("form-login", "login")
  13.             .Add("form-login-username", "username")
  14.             .Add("form-login-password", "passwd")
  15.             .Add("username", TextBox1.Text) '
  16.             .Add("passwd", TextBox2.Text) '
  17.         End With
  18.         With wbBrowser.Document
  19.             .GetElementById(Info("form-login-username")).SetAttribute("value", Info("username"))
  20.             .GetElementById(Info("form-login-password")).SetAttribute("value", Info("passwd"))
  21.             .GetElementById("Submit").InvokeMember("click")
  22.         End With
  23.     End Sub
  24. End Class



come vedi non è cambiato molto dalla tua guida apparte le 2 textbox aggiuntive e l'evento click sul button di login. L'eccezione viene generata esattamente nella dichiarazione dell'oggetto Info ("la chiave specificata non era presente nel dizionario").

Questo è il codice relativo al form di login del mio sito web:

Codice sorgente - presumibilmente Plain Text

  1. <h3>Login</h3>
  2.                                                                                         <form action="/index.php" method="post" name="login" id="form-login" >
  3.  
  4.                 <fieldset class="input">
  5.         <p id="form-login-username">
  6.                 <label for="modlgn_username">Nome utente</label><br />
  7.                 <input id="modlgn_username" type="text" name="username" class="inputbox" alt="username" size="18" />
  8.         </p>
  9.         <p id="form-login-password">
  10.                 <label for="modlgn_passwd">Password</label><br />
  11.                 <input id="modlgn_passwd" type="password" name="passwd" class="inputbox" size="18" alt="password" />
  12.  
  13.         </p>
  14.                 <p id="form-login-remember">
  15.                 <label for="modlgn_remember">Ricordami</label>
  16.                 <input id="modlgn_remember" type="checkbox" name="remember" class="inputbox" value="yes" alt="Remember Me" />
  17.         </p>
  18.                 <input type="submit" name="Submit" class="button" value="Login" />
  19.         </fieldset>
  20.         <ul>
  21.  
  22.                 <li>
  23.                         <a href="/index.php?option=com_user&view=reset">
  24.                         Password dimenticata?</a>
  25.                 </li>
  26.                 <li>
  27.                         <a href="/index.php?option=com_user&view=remind">
  28.                         Nome utente dimenticato?</a>
  29.                 </li>
  30.  
  31.                                 <li>
  32.                         <a href="/index.php?option=com_user&view=register">
  33.                                 Registrati</a>


Ultima modifica effettuata da Best il 14/03/2011 alle 22:01
PM
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Up
1
Down
V
Segnala al moderatore
Postato alle 18:40
Lunedì, 14/03/2011
1) L'eccezione dove viene generata? Ci sono due dizionari e una funzione con un compito simile; è ambiguo.
2) Sì. Parsa il codice della pagina.

Ho aggiunto i sorgenti nella discussione - Best - 14/03/11 21:56
PM