gpt4 book ai didi

android - 如何使用 HttpClient 在 android 中维护 session

转载 作者:行者123 更新时间:2023-11-30 03:22:47 24 4
gpt4 key购买 nike

我正在使用 HttpClient 建立服务器连接,如下所示:

DefaultHttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.example.com/login");
HttpResponse response = client.execute(httppost);

服务器 session 使用cookies

为了保持 session ,我必须对所有后续连接使用相同的客户端。我正在做并且工作正常。

但问题是,在 android 中,通常在需要时销毁 Activity 数据,这也会销毁 HttpClient(当我的应用程序处于后台时),因此 session 丢失。

有没有办法使 HttpClient 持久化?或者我该如何解决这个问题?

谢谢。

最佳答案

据我所知,无法保存您的 session 并在 Activity 重新启动后重新创建。

唯一的方法是将您的HttpClient 代码放到Service 中。通过这种方式,您可以玩 Activity 而不用担心 session 中断。

您可以找到服务文档here

The server session works with cookies.

对于 Android,默认情况下 cookie 是启用的,您无需担心。

当然你可以存储 Cookie,但我看不出它能以某种方式帮助你解决你的问题的原因。

无论如何,这是一种获取 Cookie 的技术:

List<Cookie> mCookies = null;

mCookies = httpclient.getCookieStore().getCookies();

if (mCookies.isEmpty()) {
Log.d("test_runner", "Cookies: None");
} else {
for (int i = 0; i < mCookies.size(); i++) {
System.out.println("- " + mCookies.get(i).toString());
Log.d("test_runner", "Cookies: [" + i + "]" + mCookies.get(i).toString());
}
}

这是一种将它们放回去的方法:

 CookieStore cookieStore = new BasicCookieStore(); 

for(Cookie cook : mCookies){
cookieStore.addCookie(cook);
}

httpclient = new DefaultHttpClient(params);
httpclient.setCookieStore(cookieStore);

关于android - 如何使用 HttpClient 在 android 中维护 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com