嗨,我目前正在开发一个使用 Retrofit 进行网络调用的 Android 应用程序。这是对我的要求的基本概述。
1.获取Facebook访问令牌并将其发送到服务器。 2.服务器在响应中设置一个会话cookie。 3.在所有即将到来的请求中,将会话 cookie 发回。
当前问题:
除非用户正在使用应用程序(跨不同活动),否则我能够保持会话 cookie 处于活动状态。但是一旦用户退出应用程序,Cookie 就会被删除。我已经在一个扩展应用程序类的类中声明了这些 cookie 。即使在应用程序退出后,我也需要保持这些会话 cookie 处于活动状态。这样当用户再次打开我的应用程序时,我就可以使用它们进行进一步处理。
以下是我在我的应用程序中实现的一些代码片段。
AppController.java(Application 类的子类)
公共类 AppController 扩展应用程序 { 私有静态 AppController mInstance; 私有静态 OkHttpClient 客户端; 私有静态 CookieManager cookieManager; 私有静态上下文上下文; 私有静态 AviyalApiService api;// 具有所有 GET 和 POST 的自定义接口 私有静态 OkClient okClient; 私有静态 RestAdapter 适配器; @覆盖 公共无效 onCreate() { 超级.onCreate(); 客户端 = 新的 OkHttpClient(); cookieManager = AppController.getCookieManager(); client.setCookieHandler(cookieManager); client.setFollowRedirects(true); client.setFollowRedirects(true); okClient = new OkClient(client); 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{ …… @覆盖 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); …… ApiService api = AppController.getApi(); api.fbLogin(tok, new Callback() { @覆盖 公共无效成功(FbLogin fbLogin,响应响应){ //成功 } @覆盖 公共无效失败(RetrofitError 错误){ MyFunctions.showAlertDialogue(LoginActivity.this, "登录失败", error.getMessage(), "OK", null); }); ……
提前致谢。