J'essaie de créer une application de réseau social pour Android. Ma question est la suivante : comment maintenir la session de l'utilisateur lorsqu'il se connecte ?
Veuillez m'aider à trouver la solution à la question ci-dessus.
J'essaie de créer une application de réseau social pour Android. Ma question est la suivante : comment maintenir la session de l'utilisateur lorsqu'il se connecte ?
Veuillez m'aider à trouver la solution à la question ci-dessus.
Essayer
public class Session {
private static String sessionId;
private static String userRole;
public static void setSessionId(String sessionId) {
Session.sessionId = sessionId;
}
public static String getSessionId() {
return sessionId;
}
}
Utilisez cette classe et importez-la dans toutes les autres activités. Vous pouvez définir vos propres fonctions pour gérer vos données de session spécifiques.
J'utilise DefaultHttpClient
con HttpRequestInterceptor
y HttpResponseInterceptor
. Quelque chose de similaire à ceci :
public class HTTPClients {
private static DefaultHttpClient _defaultClient;
private static String session_id;
private static HTTPClients _me;
private HTTPClients() {
}
public static DefaultHttpClient getDefaultHttpClient(){
if ( _defaultClient == null ) {
_defaultClient = new DefaultHttpClient();
_me = new HTTPClients();
_defaultClient.addResponseInterceptor(_me.new SessionKeeper());
_defaultClient.addRequestInterceptor(_me.new SessionAdder());
}
return _defaultClient;
}
private class SessionAdder implements HttpRequestInterceptor {
@Override
public void process(HttpRequest request, HttpContext context)
throws HttpException, IOException {
Log.d("SessionKeeper", "Adding session with the following string: " + session_id);
if ( session_id != null ) {
request.setHeader("Cookie", session_id);
}
}
}
private class SessionKeeper implements HttpResponseInterceptor {
@Override
public void process(HttpResponse response, HttpContext context)
throws HttpException, IOException {
Header[] headers = response.getHeaders("Set-Cookie");
if ( headers != null && headers.length == 1 ){
Log.d("SessionKeeper", "Keeping session with the following string: " + headers[0].getValue());
session_id = headers[0].getValue();
}
}
}
}
J'ai le même problème côté client Android lorsque j'essaie d'envoyer l'identifiant de session, le côté serveur crée une nouvelle session... mais vérifiez côté client Android que vous ne créez pas le DefaulthttpClient deux fois... créez le httpclient une seule fois dans l'activité principale et passez les objets dans l'autre activité ...... sans créer de second HttpClient.
Créer une session à l'aide de SharedPreferences.
public class Session {
private SharedPreferences prefs;
public Session(Context cntx) {
// TODO Auto-generated constructor stub
prefs = PreferenceManager.getDefaultSharedPreferences(cntx);
}
public void setusename(String usename) {
prefs.edit().putString("usename", usename).commit();
}
public String getusename() {
String usename = prefs.getString("usename","");
return usename;
}
}
Après avoir créé cette classe, lorsque vous voulez l'utiliser, créez un objet de cette classe comme suit
private Session session;//global variable
session = new Session(cntx); //in oncreate
//and now we set sharedpreference then use this like
session.setusename("USERNAME");
now when ever u want to get username then same work for session object and call this
session.getusename();
Bonne chance :) même chose pour le mot de passe
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.