Salve a tutti, sto realizzando un programma in Java in grado di compilare il form di una pagina
html inviando i dati tramite metodo post. Il codice html della pagina che implementa questo
form è il seguente:
Il codice con cui eseguo il post è il seguente:codice:<form method="post" action="https://indirizzo/login"> <table colspan=2 border=0 cellpadding=5 cellspacing=0 width="50%"> <tr> <td align=right><font face="Verdana, Arial, Helvetica, sans-serif" size="2">User: </font></td> <td align=left><input type="text" name="user" value="" size="20" maxlength="255"></td> </tr> <tr> <td align=right><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Password: </font></td> <td align=left><input type="password" name="pass" value="" size="20" maxlength="255"></td> </tr> <tr> <td align=center colspan=2 height="23"><input type="image" name="mode_login" src="/images/login.gif" width="55" height="17" border="0"></td> </tr> </table> <input type="hidden" name="mac" value="00:11:50:88:3F:A5"> <input type="hidden" name="token" value="$1$67759766$t84yKzcPwoZEuxz2kKr9Z1"> <input type="hidden" name="redirect" value="http://www.google.it/"> <input type="hidden" name="gateway" value="172.31.202.1:5280"> <input type="hidden" name="timeout" value="400"> </td> </tr> </form>
Poi mi leggo la risposta al login:codice:URL urlSite1 = new URL("https://indirizzo/login"); HttpsURLConnection conn2 = (HttpsURLConnection) urlSite1.openConnection(); conn2.setSSLSocketFactory(sslContext.getSocketFactory()); conn2.setDoInput(true); conn2.setDoOutput(true); conn2.setRequestMethod("POST"); PrintWriter out = new PrintWriter(conn2.getOutputStream()); String encode = "ISO-8859-1"; String data = URLEncoder.encode("user", encode) + "=" + URLEncoder.encode("utente", encode); data += '&' + URLEncoder.encode("pass", encode) + "=" + URLEncoder.encode("password", encode); data += '&' + URLEncoder.encode("mac", encode) + "=" + URLEncoder.encode(mac,encode); data += '&' + URLEncoder.encode("token", encode) + "=" + URLEncoder.encode(token, encode); data += '&' + URLEncoder.encode("redirect", encode) + "=" + URLEncoder.encode(redirect,encode); data += '&' + URLEncoder.encode("gateway", encode) + "=" + URLEncoder.encode(gateway, encode); data += '&' + URLEncoder.encode("timeout", encode) + "=" + URLEncoder.encode(timeout, encode); out.print(data); out.flush(); out.close();
Teoricamente la risposta che si ottiene dovrebbe essere un avviso che il login è andato a buon fine oppure una richiesta di reinserimento dei dati. Invece ciò che ottengo in risposta è la stessa pagina di login, ma con i campi user e password già compilati: in pratica lo stesso codice con la seguente differenza:codice:BufferedReader rd1 = new BufferedReader(new InputStreamReader(conn2.getInputStream())); String line1=""; while ((line1 = rd1.readLine()) != null) { textArea.append(line1+"\n"); } rd1.close();
Dove "utente" e "password" non sono altro che il nome utente e la password che ho inviato durante la procedura di POST dei dati.codice:<td align=left><input type="text" name="user" value="utente" size="20" maxlength="255"></td> </tr> <tr> <td align=right><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Password: </font></td> <td align=left><input type="password" name="pass" value="password" size="20" maxlength="255"></td>
Qualcuno ha qualche suggerimento da darmi per risolvere il problema??

Rispondi quotando
