Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to keep HTTP session cookies in HttpContext between activities on Android?

Here is current simple description my app. It uses some remote server API, which uses standart HTTP session. Login activity. It calls auth class, passing login and password.

public class Auth extends AsyncTask{
...
private DefaultHttpClient client = new DefaultHttpClient();
private HttpContext localContext = new BasicHttpContext();
private CookieStore cookieStore = new BasicCookieStore();
...
public void auth(String login, String password) {
    localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
    HttpPost request = new HttpPost(url);
    ...
}
protected void onPostExecute(Boolean result){
    parent.loginresponse(result)
}

On successful auth, remote server creates standart HTTP session, sending me cookie, saved in CookiStore. After login, loginresponse starts main activity. There I wish to have one universal class for all API requests.

How do I make correct keeping alive HTTP session information, created after login, between all activities, and passing it to needed functions for corresponding API methods?

like image 578
uzer Avatar asked May 24 '12 13:05

uzer


2 Answers

If you use a DI framework like Dagger, you can maintain a HttpContext between activities and inject it wherever you like!

like image 68
OrhanC1 Avatar answered Nov 15 '22 01:11

OrhanC1


You can use a singleton class that would look something like this:

public class UserSession
{
    private static UserSession sUserSession;

    /*
       The rest of your class declarations...
    */

    public get(){
        if (sUserSession == null)
        {
            sUserSession = new UserSession();
        }
        return sUserSession;
    }
}

Once an instance of this class is initialized, it will stay in memory.

like image 45
John Doe Avatar answered Nov 14 '22 23:11

John Doe