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