Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [JAVA]Invio di dati tramite metodo POST

    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??

  2. #2
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    ma qual è l'indirizzo della pagina che contiene il form? forse concide con l'indirizo specificato come action del form?

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  3. #3
    Si, è lo stesso indirizzo specificato come action nel form. Comunque è mia opinione che il problema stia nella gestione dell'innput di tipo immagine <input type="image" name="mode_login":
    devo magari postare qualche valore?

  4. #4

    [JAVA] Domande sul Post http in Java

    Ho alcune domande riguardo all'esecuzione di un post http in Java del tipo:

    codice:
    //Codifica dei parametri da inviare
    String encode = "UTF-8";
    String data = URLEncoder.encode("user", encode) + "=" + URLEncoder.encode("utente", encode);
    data += '&' + URLEncoder.encode("pass", encode) + "=" + URLEncoder.encode("password", encode);
    
    //Connessione alla risorsa e post dei parametri
    URL urlSite1 = new URL("http://sito/cgi-bin/login");
    HttpURLConnection conn2 = urlSite1.openConnection();
    conn2.setDoInput(true);
    conn2.setDoOutput(true);
    conn2.setRequestMethod("POST");
    
    PrintWriter out = new PrintWriter(conn2.getOutputStream());
    out.write(data);
    out.flush();
    out.close();
    Questa operazione è identica a quella che farebbe un comune browser web alle prese con una form che richiede l'invio dei parametri specificati nel codice? Intendo dire che mi sto chiedendo se i dati inviati assumono la forma di un pacchetto http standard o se vengano solo inviati i parametri così come sono nella stringa "data" (che contiene solo coppie parametro=valore). Nel caso i dati inviati non assumano la forma di un pacchetto http con tutti i suoi header vari, è possibile che alcuni server non riconoscano la richiesta come valida e diano in risposta strani risultati diversi da quelli che ci si aspetta? Ed infine: qalcuno saprebbe dirmi come inviare una richiesta http di questo tipo fedele a quella che farebbe un normale browser?

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Ho unito la discussione visto che avevi già genericamente parlato di problemi con l'operazione di POST in una discussione precedente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.