Подтвердить что ты не робот

Постоянный куки для Android HttpClient

ОБНОВЛЕНИЕ: этот вопрос и его ответы больше не должны рекомендовать никому, кто это читает. Android no-longer рекомендует HttpClient (чтение: устарело) и вместо этого рекомендует HttpUrlConnection. Хорошим примером использования библиотек сейчас являются Retrofit и OkHttp. В контексте этого вопроса файлы cookie могут быть сохранены, сохранены и доставлены с последующими запросами. Это не обрабатывается прозрачно. С помощью OkHttp вы можете использовать Interceptors.

У меня есть приложение Android с несколькими намерениями.

Первое намерение - это форма входа в систему, последующие намерения полагаются на файлы cookie, предоставленные в процессе регистрации.

Проблема, с которой я столкнулась, заключается в том, что файлы cookie, похоже, не сохраняются по существу. Я создаю новые HttpClients в каждом намерении (сначала я попытался передать Parcelable на каждое намерение, что не так хорошо работает).

Есть ли у кого-нибудь советы по созданию cookie файлов, которые сохраняются? [/p >

4b9b3361

Ответ 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;