Постоянный куки для Android HttpClient
ОБНОВЛЕНИЕ: этот вопрос и его ответы больше не должны рекомендовать никому, кто это читает. Android no-longer рекомендует HttpClient (чтение: устарело) и вместо этого рекомендует HttpUrlConnection. Хорошим примером использования библиотек сейчас являются Retrofit и OkHttp. В контексте этого вопроса файлы cookie могут быть сохранены, сохранены и доставлены с последующими запросами. Это не обрабатывается прозрачно. С помощью OkHttp вы можете использовать Interceptors.
У меня есть приложение Android с несколькими намерениями.
Первое намерение - это форма входа в систему, последующие намерения полагаются на файлы cookie, предоставленные в процессе регистрации.
Проблема, с которой я столкнулась, заключается в том, что файлы cookie, похоже, не сохраняются по существу. Я создаю новые HttpClients в каждом намерении (сначала я попытался передать Parcelable на каждое намерение, что не так хорошо работает).
Есть ли у кого-нибудь советы по созданию cookie файлов, которые сохраняются? [/p >
Ответы
Ответ 1
Вы можете сделать то, что предложил @Emmanuel, или вы можете передать BasicHttpContext между создаваемыми вами HttpClients.
Пример Использование контекста и файлов 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; это очистит файлы cookie. Повторное использование одного HttpClient.
Ответ 3
Сделайте свой httpClient одноэлементным классом.
Ответ 4
определить HttpClient в классе приложения и использовать в действии.
в приложении
public class AAA extends Application {
public HttpClient httpClient;
httpClient = new DefaultHttpClient();
в деятельности
AAA aaa = (AAA)getApplication();
httpClient = app.httpClient;