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:
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();
}
Ringrazio per l'aiuto.
Complimenti per il forum
P_