Tenemos una aplicación de Android que requiere que el usuario ingrese una respuesta a un Captcha. Captcha se genera en nuestro servidor. Cuando las respuestas, se envía al servidor para verificar.Reutilizando HttpURLConnection para mantener viva la sesión
El problema es que, dado que tengo que cerrar la HttpURLConnection después de la solicitud de Captcha I, encuentro que la respuesta se está ejecutando en una sesión diferente en el servidor. Debido a esto, la comprobación de Captcha falla, ya que depende de la sesión.
¿Hay alguna manera de mantener viva la conexión o debería seguir una ruta diferente? Sé que en la aplicación de iPhone equivalente permanecen "conectadas" y por lo tanto tienen el mismo sessionid.
Editar:
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 vez que he definido el "CookieManager" ¿entonces agrego uno que contiene el sessionid? – theblitz
Ok, tengo una pregunta importante para ti: ¿Estás usando API 9+ (2.3+)? Si es así, simplemente agrega que antes de conectarlo deberías estar bien. Si usa 2.2 o menos, debe usar HttpClient del paquete org.apache. Si lo haces para 2.2, agregaré un código de ejemplo. – DallaRosa
Por el momento se establece en 2.3, pero no estoy seguro de que vamos a dejarlo así. Podría dejarlo caer arriba 2.2 pero no estoy seguro. Parece que el 99% de los dispositivos aquí son 2.3+, por lo que debería estar bien. – theblitz