2012-07-29 14 views
5

que estoy tratando de hacer un script de conexión para mi aplicación Android, el script enviará mi correo electrónico y contraseña al servidor PHP, verificar el inicio de sesión y luego crear una sesión de PHP para que el usuario permanece conectado. Este es mi código,El uso de las sesiones de PHP con mi aplicación Android para iniciar sesión

HttpPost httppost = new HttpPost("http://server.com/login.php"); 
// Create a new HttpClient and Post Header 
HttpClient httpclient = new DefaultHttpClient(); 

public String login() { 

    String userID = ""; 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("email", "[email protected]")); 
     nameValuePairs.add(new BasicNameValuePair("password", "admin")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     HttpResponse response = httpclient.execute(httppost); 

     userID = EntityUtils.toString(response.getEntity()); 
     //Log.v("Login response", "" + userID); 



    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 

    return userID; 
} 

Este script envía los datos con éxito a mi servidor y mi PHP sesión correctamente al usuario en. He colocado "HttpClient httpclient = new DefaultHttpClient();" fuera de mi método de inicio de sesión principal Esto ha ayudado a almacenar la sesión hasta que llamo a otra clase, luego simplemente restablece la sesión nuevamente. Así que me pregunto cómo puedo alterar el código para que "httpclient" esté almacenado de alguna manera, así puedo mantener la sesión y permanecer conectado a mi servidor. ¡Gracias!

+0

Creo que se puede guardar el sessionId en un 'SharedPreferences' y cada vez que necesite enviar una solicitud acaba de obtener a partir de ahí – monim

Respuesta

3

Android Http get Session Cookie

Obtener el ID de sesión de cookies y el uso de cookies que en los próximos peticiones al servidor.

+0

Gracias, pero ¿cómo guardo la variable de encabezado para que pueda acceder fácilmente desde todas mis clases? – rusty009

+0

¿Se puede pasar un objeto global que contiene esa información variable? Pruebe y vea este ejemplo sobre la idea ... http://www.javaworld.com/javaqa/2000-05/03-qa-0526-pass.html –

2

Otra forma es hacer que su código php repita una cadena que contiene el session_id en su respuesta al inicio de sesión. Permita que la aplicación de Android recupere esta identificación y la almacene. Cualquier solicitud de futuros se pueden hacer mediante el uso de método post con sess_id = almacenan Identificación

<?php 
if(isset($_POST['sess_id'])) 
{ 
session_id($_POST['sess_id']); //starts session with given session id 
session_start(); 
$_SESSION['count']++; 
} 
else { 
session_start(); //starts a new session 
$_SESSION['count']=0; 
} 
echo session_id(); 
?> 
+0

¿Le gustaría escribir un ejemplo de cómo usa una solicitud al servidor, entonces usted ya tiene la identificación de la sesión? – Vinigas

Cuestiones relacionadas