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:
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>
Il codice con cui eseguo il post è il seguente:
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();
Poi mi leggo la risposta al login:
codice:
BufferedReader rd1 = new BufferedReader(new InputStreamReader(conn2.getInputStream()));
String line1="";
while ((line1 = rd1.readLine()) != null) {
textArea.append(line1+"\n");
}
rd1.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:
<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>
Dove "utente" e "password" non sono altro che il nome utente e la password che ho inviato durante la procedura di POST dei dati.
Qualcuno ha qualche suggerimento da darmi per risolvere il problema??