嗨,我目前正在开发一个使用 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);
});
……
提前致谢。