Android HttpClient persistent cookies

2022-09-01 05:12:53

更新:这个问题及其答案不应再推荐给任何阅读本文的人。Android不再推荐HttpClient(阅读:已弃用),而是推荐HttpUrlConnection。现在要使用的库的一个很好的例子是RetrofitOkHttp。在这个问题的背景下,Cookie可以与后续查询一起保存,存储和交付。这不会以透明方式处理。使用OkHttp,您可以使用拦截器

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

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

我遇到的问题是cookie似乎没有在意图中持久存在。我正在在每个意图中创建新的HttpClients(我最初尝试将其Mailable传输到每个意图,但效果不佳)。

有没有人有任何技巧可以使cookie跨意图持久化?


答案 1

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

示例 上下文和 Cookie 的使用,此处提供完整代码

    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);

答案 2

不要创建新的 HttpClients;这将清除饼干。重用单个 HttpClient。


推荐