Ciao a tutti
Sto realizzando una applicazione in j2me che dovrebbe eseguire la login in un sito per fare delle operazioni automatiche.
Premetto che il sito con cui sto facendo delle prove è stato realizzato da me con Drupal.
Il problema è che eseguendo la richiesta della pagina e passando in post i dati della login vengo sempre rimandato alla pagina di login...Nel metodo in cui effettuo la richiesta se ci sno redirect li eseguo.
Ho provato a fare un pò di sniffing e le richieste che invio io sono praticamente le stesse del mio browser (mozilla firefox 2.0.0.12).
La stringa di login è questa
http://microboz.netsons.org/index.ph...er_login_block
Ovviamente i dati dopo ? li mando in post (omettendo avviamente ?)
Penso che il problema possa essere dovuto alla gestione dei cookie, per questo ho creato un oggetto cookieContainer dove immagazzino i cookies che ricevo per poi reinviarli con successive richieste.
Posto un pò di codice:
Ringrazio per l'aiuto.codice:private void connection(String uri, String method) throws IOException{ // effettuo la connessione alla risorsa specificata conn=(HttpConnection)Connector.open(uri); conn.setRequestMethod(method); conn.setRequestProperty("User-Agent","vSms"); conn.setRequestProperty("Connection","Close"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7"); // imposto eventuali cookie if (acceptCookies) { String cookiesToAdd = cookies.addCookiesToConnection(conn); conn.setRequestProperty("Cookie",cookiesToAdd); } // invio eventuali dati POST if ((method == HttpConnection.POST) && (post.length()>0)){ //System.out.println("Post-data: " + post); os = conn.openOutputStream(); os.write(post.getBytes()); os.close(); } // stream di risposta is = conn.openInputStream(); // leggo i cookies if (acceptCookies) cookies.readCookies(conn); } private void performRedirect(String uri) throws IOException { String myRequestMethod = method; int myRedirects = 0; int code = 0; while (myRedirects<maxRedirect){ // richiedo la risorsa connection(uri, myRequestMethod); // leggo la risposta dal server code = conn.getResponseCode(); // controllo se ci sono eventuali redirect if ((code >= HttpConnection.HTTP_MOVED_PERM && code <= HttpConnection.HTTP_SEE_OTHER) || (code == HttpConnection.HTTP_TEMP_REDIRECT)){ //getHtmlToStream(); // ricavo la nuova url uri=conn.getHeaderField("Location"); post=""; closeConnection(); System.out.println("Redirect: " + uri); if (++myRedirects>maxRedirect){ // superato il numero massimo di redirect throw new IOException("Too many redirects!"); } myRequestMethod = HttpConnection.POST; if (code == HttpConnection.HTTP_MOVED_TEMP || code == HttpConnection.HTTP_SEE_OTHER) { myRequestMethod = HttpConnection.GET; } continue; } else break; } //if (myRedirects>0) System.out.println("Eseguiti (" + myRedirects + ") redirects."); // ricavo l'html della pagina getHtmlToStream(); }
Complimenti per il forum
P_

Rispondi quotando