Abbiamo un'applicazione Android che richiede all'utente di inserire una risposta a un Captcha. Il Captcha è generato sul nostro server. Quando le risposte, viene inviato al server per la verifica.Riutilizzo HttpURLConnection in modo da mantenere attiva la sessione
Il problema è che dal momento che devo chiudere HttpURLConnection dopo la richiesta per il Captcha I, quindi trovare che la risposta è in esecuzione su una sessione diversa sul server. Per questo motivo il controllo Captcha fallisce dato che dipende dalla sessione.
C'è un modo per mantenere attiva la connessione o devo seguire un percorso diverso? So che nell'applicazione iPhone equivalente rimangono "connessi" e quindi hanno lo stesso sessionid.
Edit:
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
URL urlObj = new URL(urlPath);
conn = (HttpURLConnection) urlObj.openConnection();
if (urlPath.toLowerCase().startsWith("https:")) {
initializeHttpsConnection((HttpsURLConnection) conn);
}
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Language", "en-US");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-Length", Integer.toString(bodyData.length));
if (_sessionIdCookie != null) {
conn.setRequestProperty("Cookie", _sessionIdCookie);
}
// Connect
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
Una volta definito il "CookieManager", ne aggiungo uno che contenga il sessionid? – theblitz
Ok, ho una domanda importante per te: stai usando API 9+ (2.3+)? SE sì, basta aggiungere che prima di connetterti dovresti essere ok. Se stai usando 2.2 o meno dovresti usare HttpClient dal pacchetto org.apache. Se lo fai per 2.2 aggiungerò del codice di esempio. – DallaRosa
Al momento è impostato su 2.3 ma non siamo sicuri che lo lasceremo così. Potrebbe cadere in alto 2.2 ma non sono sicuro. Sembra che il 99% dei dispositivi qui sia 2.3+, quindi dovrebbe essere ok. – theblitz