2012-05-15 119 views
4

我正在尝试为Android创建社交网络应用程序。我的问题是如何维护用户会话时,用户登录?在Android中维护用户会话

请帮我找到上述问题的解决方案。

+0

不[此链接] (http://stackoverflow.com/questions/6047691/android-user-login-and-stays-in-session-until-logout-which-needs-approval)有帮助吗? – tipycalFlow

回答

8

尝试

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

} 

使用这个类以及所有其他活动导入。您可以定义自己的职能,以维护您的特定的会话数据

0

我用DefaultHttpClientHttpRequestInterceptorHttpResponseInterceptor。 事情类似:

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

    } 
} 
0

我有,当我试图发送会话ID,服务器端是创建一个新的会话...但你检​​查的机器人在我的Android客户端类似的问题客户端,你没有创建DefaulthttpClient两次...创建httpclient只是说一次主要活动,并通过其他活动中的对象......不创建第二个HttpClient

0

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

现在当u想用这个使用这个方法使对象OG这个类像

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(); 

好运:)相同的密码使这一课后