Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1

    Login via HttpURLConnection

    Ciao a tutti, sto realizzando un programmino che faccia un riassunto generale del RegistroElettronico utilizzato nella mia scuola, ho sistemato il parsing dei dati e funziona tutto alla grande, unico dilemma: il LOGIN.
    La pagina a cui devo loggarmi è questa:
    https://www.registroelettronico.com/...i_pt/index.php
    e per effettuare l'accesso imposto gli input "form_username" e "form_password" con i dati corretti, solo che non so come fare a effettuare l'invio dei dati visto che non è effettuato con un link che rimanda ad una pagina! Spero di essere stato chiaro, qualcuno ha qualche consiglio per risolvere ed accedere?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    La richiesta falla passando username e password in POST, dovrebbe funzionare


    Consiglio di usare le Http Commons di Apache, semplificano parecchio il lavoro
    http://hc.apache.org/
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Originariamente inviato da Alex'87
    La richiesta falla passando username e password in POST, dovrebbe funzionare


    Consiglio di usare le Http Commons di Apache, semplificano parecchio il lavoro
    http://hc.apache.org/
    Io adesso il passaggio lo faccio così, sbaglio qualcosa?
    codice:
    URL sito = new URL("https://www.registroelettronico.com/scuole/fedi_pt/");
            HttpURLConnection connection = (HttpURLConnection) sito.openConnection();
            connection.setDoOutput(true);
            connection.setRequestMethod("POST");
            PrintStream ps = new PrintStream(connection.getOutputStream());
            ps.print("form_username=*****&form_password=****");
            ps.close();
            connection.connect();
            if (HttpURLConnection.HTTP_OK == connection.getResponseCode()) {
                System.out.println("ok");
                InputStream is = connection.getInputStream();
                OutputStream os = new FileOutputStream("output.html");
                int data;
                while ((data = is.read()) != -1) {
                    os.write(data);
                }
                is.close();
                os.close();
                connection.disconnect();
            }

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Questo dovrebbe essere più corretto:

    codice:
    HttpURLConnection connection = (HttpURLConnection) sito.openConnection();
    connection.setDoOutput(true);
    connection.setDoInput(true);   // Aspettiamo anche una risposta
    connection.setRequestMethod("POST");
    connection.setUseCaches(false);   // Non usiamo meccanismi di cache
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    PrintWriter output = new PrintWriter(new OutputStreamWriter(connection.getOutputStream()));
    output.print("form_username=" + URLEncoder.encode("xxx", "ISO-8859-1"));
    output.println("&form_password=" + URLEncoder.encode("yyy", "ISO-8859-1"));
    output.flush();
    output.close();
    ...   // Attendi qualche istante
    int respCode = con.getResponseCode();
    switch( respCode ) {
       case HttpURLConnection.HTTP_OK: 
          ...   // Leggi la risposta
          break;
       ...
    }
    Ovviamente "xxx" e "yyy" sono, rispettivamente, il nome utente e la password.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Originariamente inviato da LeleFT
    Questo dovrebbe essere più corretto:

    codice:
    HttpURLConnection connection = (HttpURLConnection) sito.openConnection();
    connection.setDoOutput(true);
    connection.setDoInput(true);   // Aspettiamo anche una risposta
    connection.setRequestMethod("POST");
    connection.setUseCaches(false);   // Non usiamo meccanismi di cache
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
    PrintWriter output = new PrintWriter(new OutputStreamWriter(connection.getOutputStream()));
    output.print("form_username=" + URLEncoder.encode("xxx", "ISO-8859-1"));
    output.println("&form_password=" + URLEncoder.encode("yyy", "ISO-8859-1"));
    output.flush();
    output.close();
    ...   // Attendi qualche istante
    int respCode = con.getResponseCode();
    switch( respCode ) {
       case HttpURLConnection.HTTP_OK: 
          ...   // Leggi la risposta
          break;
       ...
    }
    Ovviamente "xxx" e "yyy" sono, rispettivamente, il nome utente e la password.


    Ciao.
    Grazie mille,
    Ho provato ma nell' "output.html" che crea dopo aver verificato che la risposta è HTTP_OK mi lascia sempre la pagina di login e non quella da loggato..
    Come mai usi [B]&[\B]form_password e form_username?

  6. #6
    Il fatto è che l'invio del login non viene effettuato con un link. E le mie conoscenze nel campo non sono sufficienti per capire come inviare il login.

  7. #7
    Nessuno ha un idea sul motivo per cui non riesce a connettersi?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    guardando il codice del form, c'è pure un altro campo (hidden) che viene passato:

    form_stato = login
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da biagio95
    Grazie mille,
    Ho provato ma nell' "output.html" che crea dopo aver verificato che la risposta è HTTP_OK mi lascia sempre la pagina di login e non quella da loggato..
    Io non ho controllato la pagina originale, mi sono "fidato" di quello che gli passavi tu e ti ho solo fatto vedere che

    1) Bisogna aggiungere l'encoding per essere sicuri che tutti i caratteri vengano passati correttamente
    2) Se vuoi attendere una risposta devi indicarlo nella connection
    3) Risulta utile togliere di mezzo i meccanismi di caching

    Come mai usi [B]&[\B]form_password e form_username?
    Perchè è ciò che hai usato tu nel tuo precedente codice (io mi sono basato su quello).

    Ho passato prima "form_username" e poi ho appeso (con la & come hai fatto anche tu), la "form_password".

    Andrea1979, che ha giustamente guardato la pagina originale, ha visto che manca un parametro, che va aggiunto alla richiesta.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Ahah hai ragione scusami erano 2 ore che sbattevo su quella pagina cominciavo a non seguire più bene.. Se non vi scoccia potreste spiegarmi perchè con l'username usiamo il print e con la password appendiamo con la &? So che l'ho usato anche io, ma già non mi era chiaro e pensavo fosse una sintassi stile "AND".
    Ed un ultima cosa, cosa intendi con "Attendi qualche istante" ?
    Grazie di tutto, gentilissimi!

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.