Salve
sto programmando un applicazione java che esegue il login ad un sito e successivamente esegue delle ricerche sempre sullo stesso sito.
ora vi posto un pò di codice e vi spiego il mio problema
questo è il costruttore della mia classe, l'ho pensato in questo modo per far si di fare una sola volta il login e poi utilizzare la stessa sessione per tutte le ricerche che mi interessano!codice:manager = new CookieManager(null, CookiePolicy.ACCEPT_ALL); CookieHandler.setDefault(manager); urlConnection = new URL(Names.urlHome); con = (HttpURLConnection) urlConnection.openConnection(); String headerName = null; for (int i = 1; (headerName = con.getHeaderFieldKey(i)) != null; i++) { if (headerName.equals("Set-Cookie")) { jSessionId = con.getHeaderField(i); } } System.out.println(jSessionId); //Login urlConnection = new URL(Names.urlLogin); con = (HttpURLConnection) urlConnection.openConnection(); con.setRequestProperty("User-Agent", Names.userAgent); con.setRequestProperty("Cookie", jSessionId); con.setRequestProperty("Content-Type", Names.contentType); con.setRequestProperty("Accept-Language", Names.language); con.setRequestProperty("Accept-Encoding", Names.acceptEncoding); con.setRequestMethod("POST"); con.setDoInput(true); con.setDoOutput(true); wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParametersLogin); wr.flush(); wr.close(); System.out.println("Sending 'POST' request to URL : " + Names.urlLogin); System.out.println("Post parameters : " + urlParametersLogin); System.out.println("Response Code : " + con.getResponseCode() + " " + con.getResponseMessage()); log.info("Login completato");
in un primo momento invio una richiesta fantoccio solo per farmi restituire la sessione e poi invio i parametri alla servlet di login.
questo invece è il metodo che fa le ricerche sul sito
il mio problema è che effettua la ricerca correttamente ma se non si è loggati non fa visualizzare alcune proprietà degli oggetti ricercati sul sito. e infatti quando ricerco le informazioni nella response non le trovo come se il login non fosse andato a buon fine.codice:log.info("============ Ricerco il prodotto: " + riferimento + " ============"); urlConnection = new URL(Names.urlRicerca); con = (HttpURLConnection) urlConnection.openConnection(); con.setRequestProperty("Cookie", jSessionId); con.setDoOutput(true); wr = new DataOutputStream(con.getOutputStream()); wr.writeBytes(urlParametersSearch + riferimento); wr.flush(); wr.close(); System.out.println("Sending 'POST' request to URL : " + Names.urlRicerca); System.out.println("Post parameters : " + urlParametersSearch + riferimento); System.out.println("Response Code : " + con.getResponseCode() + " " + con.getResponseMessage()); in = new BufferedReader(new InputStreamReader(con.getInputStream())); response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); log.info("Ricerca completata: " + riferimento);
dove sbaglio?
grazie mille

Rispondi quotando