Android HttpClient持久性cookie

时间:2010-11-10 16:54:13

标签: java android cookies httpclient

更新:不再向阅读此内容的任何人推荐此问题及其答案。 Android no-longer recommends HttpClient (read: deprecated), and instead recommends HttpUrlConnection。现在使用的库的一个很好的例子是RetrofitOkHttp。在此问题的上下文中,可以使用后续查询保存,存储和传递cookie。这不是透明处理的。使用OkHttp you can use Interceptors

我有一个具有多种意图的Android应用程序。

第一个意图是登录表单,后续意图依赖于登录过程提供的cookie。

我遇到的问题是,Cookie似乎并没有持续存在。我在每个意图中创建新的HttpClients(我最初尝试将Parcelable传输到每个意图,但效果不是很好)。

有没有人有任何提示让Cookie在意图中持续存在?

4 个答案:

答案 0 :(得分:31)

您可以执行@Emmanuel建议的内容,也可以在您正在创建的HttpClients之间传递BasicHttpContext

使用上下文和Cookie,complete code here

    HttpClient httpclient = new DefaultHttpClient();

    // Create a local instance of cookie store
    CookieStore cookieStore = new BasicCookieStore();

    // Create local HTTP context
    HttpContext localContext = new BasicHttpContext();
    // Bind custom cookie store to the local context
    localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

    HttpGet httpget = new HttpGet("http://www.google.com/", localContext);

答案 1 :(得分:22)

不要创建新的HttpClients;这将清除cookie。重用一个HttpClient。

答案 2 :(得分:4)

答案 3 :(得分:4)

在Application类中定义HttpClient,并使用activity。

在应用程序

public class AAA extends Application {
    public HttpClient httpClient; 

    httpClient = new DefaultHttpClient(); 

在活动中

AAA aaa = (AAA)getApplication();
httpClient = app.httpClient;