Сеансовый файл 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()
,