在Android中维护用户会话

在Android中维护用户会话,android,social-networking,Android,Social Networking,我正在尝试为Android制作社交网络应用程序。我的问题是当用户登录时如何维护用户会话 请帮我找到上述问题的答案 试试看 public class Session { private static String sessionId; private static String userRole; public static void setSessionId(String sessionId) { Session.sessionId = sessionId; } public sta

我正在尝试为Android制作社交网络应用程序。我的问题是当用户登录时如何维护用户会话

请帮我找到上述问题的答案

试试看

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

}
使用该类并在其他所有活动中导入它。您可以定义自己的功能来维护特定的会话数据

请看上面的链接。细节相当详细


使用单例来维护用户会话

我将
DefaultHttpClient
HttpRequestInterceptor
HttpResponseInterceptor
一起使用。 类似于此:

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

    }
}

当我试图发送会话id时,我的android客户端也有类似的问题,服务器端正在创建一个新的会话…但是你在android客户端检查,你没有两次创建DefaulthttpClient。。。只需创建一次httpclient,说出主活动并在其他活动中传递对象。。。。。。不要创建第二个HttpClient

使用SharedReference创建会话

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;
    }
}
现在在创建这个类之后,当你想像这样使用这个类时,创建这个类的对象

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();
祝你好运:)密码也一样

有用吗?