Trwałe pliki cookie HttpClient Android
UPDATE: to pytanie i jego odpowiedzi nie powinny być polecane nikomu, kto to czyta. Android nie zaleca HttpClient (Czytaj: deprecated), a zamiast tego zaleca HttpUrlConnection . Dobrym przykładem bibliotek do wykorzystania są Retrofiti OkHttp. W kontekście tego pytania pliki cookie mogą być zapisywane, przechowywane i dostarczane wraz z kolejnymi zapytaniami. Nie jest to obsługiwane w sposób przejrzysty. Z OkHttp możesz użyć Interceptors .
Mam aplikację na Androida z wieloma intencjami.
Pierwsza intencja to formularz logowania, kolejne intencje opierają się na plikach cookie dostarczonych z procesu logowania.
Problem, który mam polega na tym, że pliki cookie nie wydają się być trwałe w całej intencji. Tworzę nowe HttpClients w każdej intencji(początkowo próbowałem Parcelable przesłać go do każdej intencji, co nie działało tak dobrze).
Czy ktoś ma jakieś wskazówki dla czy pliki cookie utrzymują się w różnych intencjach?
4 answers
Możesz zrobić to, co zasugerował @Emmanuel, lub przekazać BasicHttpContext Pomiędzy tworzonymi przez Ciebie Httpclientami.
Przykładowe użycie plików kontekstowych i ciasteczek, kompletny kod tutaj
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);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-30 12:04:09
Nie twórz nowych HttpClients; spowoduje to wyczyszczenie plików cookie. Użyj ponownie pojedynczego klienta HttpClient.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-10 17:04:02
Uczyń httpClient klasą singleton.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-05 08:54:05
Zdefiniuj HttpClient w klasie aplikacji i użyj activity.
W Aplikacji
public class AAA extends Application {
public HttpClient httpClient;
httpClient = new DefaultHttpClient();
W Aktywności
AAA aaa = (AAA)getApplication();
httpClient = app.httpClient;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-30 13:49:52