2012-01-10 2 views
1

デバイスをストアに格納するためにクッキーの値を保存しようとしましたが、アプリケーションを再起動するたびにnull値が返されるのではなく、なぜ私たちはクッキーの値を保存しないのか分かりません。Androidどのように私は、応答DefaultHttpClientからのクッキーを保存するのですか?

final HttpUriRequest request = new HttpGet(uri);     
request.setHeader("User-Agent", Sonora.USER_AGENT); 

try {      
    DefaultHttpClient client = new DefaultHttpClient();       
    if(cookieValue != null) { 
     Log.d(TAG,"COOKIE RECEBIDO E ARMAZENADO"); 

     request.setHeader("Cookie", cookieName + "=" + cookieValue); 

    } 
    HttpResponse resp = client.execute(request); 

    // Check if server response is valid 
    StatusLine status = resp.getStatusLine(); 
    if (status.getStatusCode() != Sonora.HTTP_STATUS_OK) { 
     Log.e(TAG, "HTTP error, invalid server status code: " + resp.getStatusLine()); 
     return; 
    } 

    final List<Cookie> cookies = client.getCookieStore().getCookies(); 
    int count = cookies.size(); 
    for(int i = 0; i < count; i++) { 
     final Cookie c = cookies.get(i); 
     if (c.getName().compareTo(cookieName) == 0) { 
      cookieValue = c.getValue(); 
      break; 
     } 
    } 

} catch (IOException e) { 
    Log.e(TAG, "IOError error", e); 
} 

答えて

0

クッキーは、アプリケーションを再起動した後に保存したい場合は、ファイルに書き込むか、それを格納するためにSharedPreferencesのようなものを使用するのいずれかが必要になります。あなたはSharedPreferencesを使ってこのリンクを見ることができます(これは簡単です): http://developer.android.com/reference/android/content/SharedPreferences.html

3

AndroidのCookieStoreクラスは永続的ではありません。したがって、あなたのクッキーはどこにも保存されず、アプリケーションが停止すると失われます。

アプリのSharedPreferencesにオプションの永続CookieストアをサポートするAndroid非同期Httpクライアント(http://loopj.com/android-async-http/)を使用できます。または、How to make persistent Cookies with a DefaultHttpClient in Android?のように独自の永続クッキークラスを実装することもできます。

関連する問題