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

    [JAVA] Creazione programma J2ME per cellulari

    Ciao a tutti :-)

    Mi trovo sempre qui a chiedere ancora una volta il vostro aiuto.

    Essendo passato alla tre come gestore di telefonia mobile ed avendo sia l'opzione per navigare sia l'opzione Gente di 3 vorrei creare un programmino java per visualizzare tutto il traffico che mi rimane

    Il programmino dovrebbe assomigliare a questo qua per iPhone:-)

    http://www.macitynet.it/macity/artic...iPhone/aA42840


    Trovo però difficoltà con l'autenticazione e il reindirizzamento alla pagina con i dati

    Ho scritto questo:

    codice:
    HttpConnection connection = null;
    		
    String data = "proposition=consumer&username=xxxxxxx&password=xxxxxx";
    		
    connection = (HttpConnection) Connector.open("http://areaclienti.tre.it/selfcare/login");
    connection.setRequestMethod(HttpConnection.POST);
    connection.setRequestProperty( "Host", "areaclienti.tre.it" );
    connection.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Confirguration/CLDC-1.0");
    connection.setRequestProperty("Referer", "http://areaclienti.tre.it/selfcare/areaclienti133/4552_infoCosti_ITA_HTML.xsl");
    connection.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded" );
    connection.setRequestProperty( "Content-Length", "59" );
    			
    			
    OutputStream out = connection.openOutputStream();
    out.write(	data.getBytes());
    			
    InputStream in = connection.openInputStream();
    StringBuffer sb = new StringBuffer();
    			
    int c = 0;
    while ((c = in.read()) != -1)
    {
    	sb.append((char) c);                   	
    }
                
    s = new String(sb.toString());
                
    System.out.print(s);

    Però quando mi connetto vengo reindirizzato sempre alla pagina http://areaclienti.tre.it
    e non alla pagina http://areaclienti.tre.it/selfcare/a...i_ITA_HTML.xsl

    Perchè??

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA] Creazione programma J2ME per cellulari

    Originariamente inviato da .Avanatsia.
    Però quando mi connetto vengo reindirizzato sempre alla pagina http://areaclienti.tre.it
    e non alla pagina http://areaclienti.tre.it/selfcare/a...i_ITA_HTML.xsl

    Perchè??
    Quando si fanno in modo "programmatico" connessioni a siti di questo genere, che richiedono anche una autenticazione (che potrebbe essere gestita in modo più o meno sicuro/complesso), bisogna prestare molta attenzione a cosa deve succedere sotto-sotto a livello HTTP.

    a) Potrebbe essere necessario gestire i "cookie" (cosa che non vedo nel tuo codice). Invece di fare subito il POST alla risorsa che riceve username/password potrebbe essere necessario, tipicamente, fare prima un GET della pagina di login per ricevere dei cookie (che possono contenere informazioni varie o più usualmente un ID di "sessione" che è richiesto per la autenticazione).

    b) Il sito potrebbe non accettare o trattare "male" uno user-agent del tipo "Profile/MIDP-1.0 Confirguration/CLDC-1.0". Potrebbe essere necessario mettere uno user-agent apposito per "spacciarsi" per un browser come Internet Explorer, Firefox o altri "noti".

    c) Potrebbe essere necessario gestire il protocollo https, potrebbe essere che il sito invii al client un "redirect" per passare da http ad https (e le API per il networking che io sappia non fanno il "follow" in automatico se cambia il protocollo da http a https o viceversa).

    Tutto questo l'ho detto in generale, non so quanto di questo sia applicabile a quel sito perché non lo conosco. Non è che c'è uno standard .... ogni sito è diverso sia come gestione/presentazione della pagina di login, sia come gestione della autenticazione e protezione più o meno sicura dei dati di login.

    Se vuoi davvero capire e risolvere la cosa devi comprendere bene cosa succede (anzi meglio dire cosa deve succedere) a livello HTTP. Dovresti fare dei test con un normale browser su PC usando dei tools che fanno da "debugger" per HTTP che ti mostrano cosa succede sotto-sotto.
    Puoi usare Fiddler o se usi Firefox c'è la estensione Tamper Data o altro se ne trovi in rete.
    Basta che ti mostri il log di cosa succede a livello di request/response su HTTP(S), così vedi se servono i cookie, quali eventuali redirect fa, ecc....

    Altrimenti, detto onestamente e forse un po' brutalmente, continuerai solo a perdere tempo e non cavarci il classico ragno dal buco.


    P.S. e leggere direttamente "a byte" con l'InputStream e "castare" i byte (che tecnicamente è in un int) a char, non è appropriato.
    Se sai a priori il charset e vuoi cablarlo nel sorgente o se vuoi determinarlo, se possibile (tipicamente sì) dalla response, allora usa InputStreamReader e leggi a "blocchi di char", non uno per volta!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Prima di tutto ti ringrazio moltissimo per il tempo che mi ha dedicato :-) e per gli ottimi consigli.


    Allora ho provato wireshark per vedere che comandi venivano inviati ed ho trovato questo per l'invio della password

    codice:
    Hypertext Transfer Protocol
    POST /selfcare/login HTTP/1.1\r\n
    Host: areaclienti.tre.it\r\n
    Connection: keep-alive\r\n
    Referer: http://areaclienti.tre.it/selfcare/a...A_HTML.xsl\r\n
    Content-Length: 59\r\n
    Cache-Control: max-age=0\r\n
    Origin: http://areaclienti.tre.it\r\n
    Content-Type: application/x-www-form-urlencoded\r\n
    Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n
    User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.416.0 Safari/534.1\r\n
    Accept-Encoding: gzip,deflate,sdch\r\n
    Accept-Language: it,en;q=0.8\r\n
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3\r\n
    [truncated] Cookie: __utmz=195710076.1274984399.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=195710076.117374508.1274984399.1274984399.1274984399.1; __utmz=246631489.1275132944.16.8.utmcsr=google|utmccn=(organic)|utmcmd=organi
        \r\n
    Line-based text data: application/x-www-form-urlencoded
    proposition=consumer&username=xxxxxx&password=xxxxxxx
    Allora ho scritto questo

    codice:
    SocketConnection client = (SocketConnection)Connector.open("socket://areaclienti.tre.it:80");
    
    String data = 	"POST /selfcare/login HTTP/1.1\r\n" +
    			"Host: areaclienti.tre.it\r\n" +
    			"User-Agent: Mozilla/5.0 \r\n"+
    		        "Accept:text/html,application/xhtml+xml,application/xml"+
    			"Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3\r\n"+
    			"Accept-Encoding: gzip,deflate\r\n"+
    			"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"+
    			"Keep-Alive: 300\r\n"+
    			"Connection: keep-alive\r\n"+			                "Referer:http://areaclienti.tre.it/selfcare/a...LOGGED.xsl\r\n"+
    			"Content-Type: application/x-www-form-urlencoded\r\n"+
    			"Content-Length: 59\r\n"+
    			"\r\n"+							  
                            "proposition=consumer&username=xxxxx&password=xxxx";
    							
    OutputStream out = client.openOutputStream();
    Niente mi fa sempre la stessa cosa
    L'unica cosa che non ho messo è il cookie ma non saprei propio come fare :-(

  4. #4
    EVVAIIIIIIIIIIIIIIIII ci sono riuscito :-)

    Il problema stava nella gestione dei cookie :-( dovevo:

    1) Caricare prima la pagina del login e mi veniva assegnato un cookie
    2) Fare il post dell'user name e della password inviando il cookie precedentemente assegnato

    cosi funziona!!

    Ora però ho altri due piccoli problemini

    Il primo:
    Vorrei prendere solo il cookie dalla pagina del login!!

    Secondo:
    Dalla pagina dei costi vorrei che mi fosse inviata solo la linea che contiene il credito
    evitando di scaricare tutto il resto ( cioè il resto del codice html che non mi serve )

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.