2012-10-26 7 views
5

Sto usando un'istanza Singleton un DefaultHttpClient nella mia applicazione Android in modo che la sessione con il mio sito web rimane autenticato attraverso molteplici attività dopo l'accessoAndroid: Singleton DefaultHttpClient non mancherà di tenere la sessione

Questa è la classe Singleton per. il DefaultHttpClient:

public class Client { 
    private static DefaultHttpClient instance = null; 
    //handler for current response in UI thread after receiving it in AsyncTask 
    private static HttpResponse currentResponse = null; 

    //I also tried this without "synchronized" 
    public synchronized static DefaultHttpClient getInstance() 
    { 
    if(instance == null) 
    { 
     instance = new DefaultHttpClient(); 
    } 
    return instance; 
    } 
    public static void setCurrentResponse(HttpResponse response) 
    { 
    currentResponse = response; 
    } 
    public static HttpResponse getCurrentResponse() 
    { 
    return currentResponse; 
    } 
} 

chiamo il cliente ogni volta che viene utilizzato in un AsyncTask utilizzando Client.getInstance().

ho provato:

ClientInstance = Client.getInstance(); 
Client.setCurrentResponse(ClientInstance.execute(HttpPost to execute)); 

ho provato:

Client.setCurrentResponse(Client.getInstance().execute(HttpPost to execute)); 

e numerosi altri modi di andare su di esso che ho trovato attraverso la ricerca.

Ho anche provato a utilizzare un CookeStore e HttpContext, che produce lo stesso risultato.

L'utilizzo di consumeContent() sull'entità quando viene visualizzato dalla risposta non risolve il problema.

Tutto ciò che ho trovato ha affermato che l'utilizzo di un'istanza singleton di DefaultHttpClient consente di mantenere la sua sessione, ma ogni volta che eseguo un post per eseguire un'azione per cui il mio sito Web richiede agli utenti di accedere, il corpo di risposta I torna indietro mostra l'errore che indica che la variabile di sessione 'user_id' non è impostata (quindi l'utente non ha effettuato l'accesso). Ho cercato inutilmente Google e Stack Overflow inutilmente. Qualcuno può indicare cosa sto sbagliando?

risposta

6

Ci scusiamo per la domanda, ragazzi.

Dopo aver quasi perso la mia sanità mentale, ho guardato il mio codice php ancora una volta. Si scopre che il problema era nella mia pagina Web: non permettevo al php di chiamare session_start() quando ricevevo il HttpPost mobile. Chissà, forse la mia domanda/risposta aiuterà qualcun altro.

+0

Grazie per aver messo la tua risposta qui! – Roloc

Problemi correlati