Android HttpClient持久性cookies

更新:这个问题及其答案不应该再推荐给任何读这个的人。 Android不再推荐HttpClient(阅读:弃用),而是build议HttpUrlConnection 。 现在使用库的一个很好的例子是Retrofit和OkHttp 。 在这个问题的上下文中,cookie可以被保存,存储并随后进行查询。 这不是透明地处理的。 用OkHttp你可以使用拦截器 。

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

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

我遇到的问题是,Cookie似乎并没有坚持到目标为止。 我在每个意图创build新的HttpClient(我最初尝试Parcelable传输到每个意图,这并没有很好地工作)。

有没有人有任何提示使cookie在整个意图中持续存在?

你可以做@Emmanuelbuild议的,或者你可以在你创build的HttpClient之间传递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); 

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

让你的httpClient成为一个单独的类。

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

在申请中

 public class AAA extends Application { public HttpClient httpClient; httpClient = new DefaultHttpClient(); 

在活动

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