1

我使用 httpclient 和 cookiestore 来保持我的会话,现在我想在下一个活动中使用相同的会话,我使用的是 api 8,所以我不能使用 cookiemanager。是否可以?如果我能以某种方式发送 cookie 列表,例如:

Intent i = new Intent(this, Login.class);
i.putExtra("domain", domain);
//need to get the following list across
List<Cookie> cookies = cookieStore.getCookies();
//i.putMyDamnCookies("cookies",cookies);
startActivity(i);

知道我怎么能做到这一点吗?

4

3 回答 3

2

是的,您可以将 a 发送List到另一个活动,但首先您需要将其转换为ArrayListString[]数组的实例。

看看这个线程:
Passing a List to another Activity in Android
How to put a List in intent

于 2012-10-07T16:29:22.790 回答
1

将您的列表存储为字符串数组,并将其传递给下一个活动,如下所示:

String[] cookieArray = new String[cookies.size()];
            //copy your List of Strings into the Array 
            int i=0;
            for(Cookie c : cookies ){
                cookieArray[i]=c.toString();
                i++;
             }
            //then pass it in your intent
            Intent intent = new Intent(this, Login.class);
            intent.putExtra("cookieArray", cookieArray);
            startActivity(i);  

然后在你的下一个活动中,从意图中检索 cookie 数组并将 cookie 转换回来,如下所示:

List<Cookie> cookies = new List<Cookies>();
for(int i=0;i<cookieArray.size;i++)
{
cookies.add(new HttpCookie(cookieArray[i]));
}
于 2012-10-07T16:38:31.980 回答
0

当然 - 只需从 HTTP 标头中读取 cookie,然后将其存储起来,但对您来说很方便。

我认为这可能有点矫枉过正,但这里有一个使用 Android 2.2 附带的 Apache HTTP 客户端的示例:

也看这里(从第 1 级开始可用):

于 2012-10-07T16:25:24.757 回答