4 Ekim 2012 Perşembe

java android mevcut session kaybetme

Bir android uygulamasında login olduktan sonra mevcut oturum bilgileriniz kullanarak bir servisten veri çekmek isteyebilirsiniz. Bunun içinde defaulthttpclient ve httppost ve httpresponse nesnelerini kullanabiliriz. Fakat veriyi çekerken defaulthttpclient i new lersek mevcut session ı kaybedip yeni bir session açmış oluruz ve karşıdaki servis bize login olmamış yabancı bir kişi muamelesi yaparak ya hata döndürür ya da login page i döndürür.

Bu gibi durumlarda defaulthttpclient i new lememeliyiz.


Defaulthttpclient i her zaman saklamalıyız ve ona olan referansı kaybetmemeliyiz. Bu duruma sağlayabilmek için aşağıdaki bloka sahip bir sınıf kullanabiliriz.


private CookieStore androidCookie= null;
private Object androidLock = new Object();
/**
 *Bu method mevcut cookiestore yi kullanarak yeni bir httpclient yaratır.
 *Bu şekilde mevcut session ı da almış oluruz.
 * @author Murat GUZEL
 */
private HttpClient getHttpClient() {
        final DefaultHttpClient httpClient = new DefaultHttpClient();
        synchronized (androidLock) {                
        if (androidCookie== null) { 
        androidCookie= httpClient.getCookieStore();                
        } else {
              httpClient.setCookieStore(androidCookie);               
        }
  }
  return httpClient;
}
Bu sınıfı uygulamanın heryerinde kullanabilirsiniz.

Hiç yorum yok:

Yorum Gönder