Сеансовый файл cookie не является устойчивым в модифицированной Android

Привет, я в настоящее время разрабатываю приложение для Android, которое использует Retrofit для сетевых звонков. Вот краткий обзор моих требований.

 1. Получите токен доступа Facebook и отправьте его на сервер.
     2. Сервер устанавливает Session cookie в ответе.
     3.Во всех предстоящих запросов отправьте сессионные куки обратно.

Текущая проблема:
Я могу сохранить сессионные куки-файлы, если пользователь не использует приложение (в разных видах деятельности). Но как только пользователь выходит из приложения, файлы cookie удаляются. Я объявил эти куки в классе, который выходит из класса Application. Мне нужно сохранить эти сеансовые cookie-файлы живыми даже после выхода из приложения. так что я могу использовать их для дальнейшей обработки, когда пользователь снова открывает мое приложение.

Вот некоторые фрагменты кода, которые я реализовал в своем приложении.

AppController.java (подкласс класса приложения)

    открытый класс AppController расширяет Application {
        private static AppController mInstance; приватный статический клиент OkHttpClient; приватный статический CookieManager cookieManager; частный статический контекстный контекст; приватный статический AviyalApiService api; // пользовательский интерфейс со всеми частными GET и POST статическими OkClient okClient; закрытый статический адаптер RestAdapter;

        @Override
        public void onCreate() {
            super.onCreate();

            client = new OkHttpClient();

            cookieManager = AppController.getCookieManager();
            client.setCookieHandler(cookieManager);
            client.setFollowRedirects(истинный); client.setFollowRedirects (истинный);
            okClient = новый OkClient(клиент);

            CookieManager cookieManager = new CookieManager();
            cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
            CookieHandler.setDefault(cookieManager); адаптер = новый RestAdapter.Builder()
                    .setEndpoint(context.getResources().getString(R.string.base_url))
                    .setClient(okClient).build();
        }

       .....

Вот фрагмент того, как я звоню в службу.

    класс LoginActivity расширяет Activity{
       ....
    @Override
    protected void onCreate(BundlevedInstanceState) {
        super.onCreate(savedInstanceState);
        ....
        ApiService api = AppController.getApi();
        api.fbLogin(ток, новый обратный вызов () {
            @Override
            публичный недействительный успех (FbLogin, fbLogin, Response response) {
            // успех
            }
             @Override
            ошибка public void (ошибка RetrofitError) {
                MyFunctions.showAlertDialogue(LoginActivity.this, "Ошибка входа в систему", error.getMessage(), "OK", null);
            });
        ......

Заранее спасибо.

1 ответ

Решение

Проблема решена.... Благодаря этой ссылке https://gist.github.com/jacobtabak/78e226673d5a6a4c4367

Небольшие изменения будут необходимы в вышеуказанной программе, чтобы она заработала. В приведенной выше программе она выдаст вам сообщение о том, что она не может привести запись к строке. Вы можете решить, добавивenrty.toString(),

Другие вопросы по тегам