2014-12-24 17 views
5

Ciao Attualmente sto sviluppando un'applicazione Android che utilizza Retrofit per effettuare chiamate di rete. Ecco una panoramica di base sulla mia esigenza.
Cookie di sessione non persistenti nell'aggiornamento Android

  1.Get Facebook access token and send it to the server. 
    2.The server sets a Session cookie in the response. 
    3.In all the upcoming requests send the session cookies back. 

problema attuale:
sono in grado di mantenere in vita i cookie di sessione a meno che l'utente sta utilizzando l'applicazione (attraverso diverse attività). Ma una volta che l'utente esce dall'app, i cookie vengono cancellati. Ho dichiarato questi cookie all'interno di una classe che esalta la classe Application. Devo mantenere vivi i cookie di queste sessioni anche dopo che l'app è stata chiusa. in modo che possa usarli per ulteriori elaborazioni quando l'utente apre nuovamente la mia applicazione.

Ecco alcuni snippet di codice che ho implementato nella mia applicazione.

AppController.java (sottoclasse di classe di Applicazione)

 

    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; // custom interface having all the GET and 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(); 
     } 

     ..... 

Ecco un frammento di come io chiamo il servizio.

 

    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); 
      }); 
     ...... 

Grazie in anticipo.

risposta

2

problema risolto .... Grazie a questo link https://gist.github.com/jacobtabak/78e226673d5a6a4c4367

saranno necessari A piccoli cambiamenti nel programma di cui sopra per farla funzionare. Nel programma di cui sopra ti verrà generato un errore dicendo che non è possibile eseguire il cast di ingresso in stringa. Puoi risolvere aggiungendo enrty.toString().

+0

Grazie per questo. –