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;