Android会话管理

nal*_*ver 24 java session android session-cookies apache-commons-httpclient

是否有特定的Android会话管理库?我需要在普通的Android应用中管理我的会话.不在WebView.我可以从post方法设置会话.但是当我发送另一个会话失败的请求时.有人可以帮我解决这个问题吗?

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("My url");

HttpResponse response = httpClient.execute(httppost);
List<Cookie> cookies = httpClient.getCookieStore().getCookies();

if (cookies.isEmpty()) {
    System.out.println("None");
} else {
    for (int i = 0; i < cookies.size(); i++) {
        System.out.println("- " + cookies.get(i).toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试访问会话丢失的同一主机时:

HttpGet httpGet = new HttpGet("my url 2");
HttpResponse response = httpClient.execute(httpGet);
Run Code Online (Sandbox Code Playgroud)

我得到了登录页面响应正文.

Com*_*are 39

这与Android无关.它与Apache HttpClient(您用于HTTP访问的库)有关.

会话cookie存储在您的DefaultHttpClient对象中.不是DefaultHttpClient为每个请求创建新的,而是保留它并重复使用它,并且会保留会话cookie.

你可以阅读关于Apache的HttpClient 这里去读HttpClient的cookie管理这里.

  • 此链接提供并了解如何实现此http://foo.jasonhudgins.com/2009/08/http-connection-reuse-in-android.html (2认同)