更新:不再向阅读此内容的任何人推荐此问题及其答案。 Android no-longer recommends HttpClient (read: deprecated), and instead recommends HttpUrlConnection。现在使用的库的一个很好的例子是Retrofit和OkHttp。在此问题的上下文中,可以使用后续查询保存,存储和传递cookie。这不是透明处理的。使用OkHttp you can use Interceptors。
我有一个具有多种意图的Android应用程序。
第一个意图是登录表单,后续意图依赖于登录过程提供的cookie。
我遇到的问题是,Cookie似乎并没有持续存在。我在每个意图中创建新的HttpClients(我最初尝试将Parcelable传输到每个意图,但效果不是很好)。
有没有人有任何提示让Cookie在意图中持续存在?
答案 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;