2012-07-29 7 views
5

Sto provando a creare uno script di accesso per la mia applicazione Android, lo script invierà la mia email e password al server PHP, verificare l'accesso e quindi creare una sessione PHP in modo che il utente rimane connesso. Questo è il mio codice,Utilizzo di sessioni PHP con la mia applicazione Android per accedere

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; 
} 

Questo script invia correttamente i dati al mio server e il mio PHP registra con successo l'utente. Ho inserito "HttpClient httpclient = new DefaultHttpClient();" al di fuori del mio metodo di accesso principale. Ciò ha contribuito a memorizzare la sessione finché non richiama un'altra classe, quindi ripristina nuovamente la sessione. Quindi mi chiedo come posso modificare il codice in modo che "httpclient" sia in qualche modo memorizzato in modo da poter mantenere la sessione e rimanere connesso al mio server. Grazie!

+0

Penso che si può salvare il sessionId in un 'SharedPreferences' e ogni volta che è necessario inviare una richiesta solo ottenere da lì – monim

risposta

3

Android Http get Session Cookie

Prendi il cookie ID di sessione e utilizzare il cookie nei prossimi richieste al server.

+0

Grazie, ma come faccio a salvare la variabile Header in modo da potervi facilmente accedere da tutte le mie classi? – rusty009

+0

Puoi passare un oggetto globale che contiene le informazioni variabili? Prova e guarda questo esempio sull'idea ... http://www.javaworld.com/javaqa/2000-05/03-qa-0526-pass.html –

2

Un altro modo è rendere il codice php echo una stringa contenente il session_id nella sua risposta al login. L 'app Android recupera questo ID e lo memorizza. Eventuali future richieste possono essere effettuate utilizzando il metodo post con sess_id = memorizzato id

<?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

Ti piacerebbe scrivere un esempio di come usi una richiesta al server allora hai già l'ID di sessione? – Vinigas

Problemi correlati