你好,我目前正在开发一款使用Retrofit进行网络调用的Android应用程序。这是我的需求基本概述。
1.获取Facebook访问令牌并将其发送到服务器。 2.服务器在响应中设置一个会话Cookie。 3.在所有即将到来的请求中,将会话Cookie发送回去。
当前问题:
我能够保持会话Cookie处于活动状态,除非用户在应用程序中使用它(跨不同的活动)。但是一旦用户退出应用程序,Cookies就会被删除。我已经在扩展Application类的类中声明了这些Cookies。我需要在应用程序退出后也保持这些会话Cookie处于活动状态,以便在用户再次打开我的应用程序时可以将它们用于进一步处理。
这里是我在应用程序中实现的一些代码片段。
AppController.java(Application类的子类)
public class AppController extends Application { private static AppController mInstance; private static OkHttpClient client; private static CookieManager cookieManager; private static Context context; private static AviyalApiService api; //自定义接口包含所有GET和POST private static OkClient okClient; private static RestAdapter adapter;
@Override public void onCreate() { super.onCreate();
client = new 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);
adapter = new RestAdapter.Builder() .setEndpoint(context.getResources().getString(R.string.base_url)) .setClient(okClient).build(); }
.....
这里是我调用服务的代码片段。
class LoginActivity extends Activity{ .... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); .... ApiService api = AppController.getApi(); api.fbLogin(tok, new Callback() { @Override public void success(FbLogin fbLogin, Response response) { //success } @Override public void failure(RetrofitError error) { MyFunctions.showAlertDialogue(LoginActivity.this, "Login Failed", error.getMessage(), "OK", null); }); ......
谢谢。