2015-08-28 1 views
1

Je veux donner un soutien hors ligne dans mon application et j'ai utilisé volley bibliothèque pour analyser les données de jsonobject. J'ai appris que la volée elle-même a un bon mécanisme de cache. J'ai implémenté ce code pour obtenir des données du cacheVolley cache retourne toujours null dans android

Cache cache = GlobalData.getInstance().getRequestQueue().getCache(); 
Cache.Entry entry = cache.get(Constants.URL_WEATHER_REQUEST + city); 

mais l'entrée renvoie toujours la valeur null. Je l'ai entendu parler de l'en-tête du site du serveur et je l'ai testé à l'aide RESTClient addonn dans mozilla qui ressemble à ceci:

header from the server

Je ne sais pas où est le problème, mais je reçois toujours nulle entrée de cache et Si Je tourne l'internet sur la volée, comme d'habitude. Qu'est-ce que je devrais faire maintenant?

+1

S'il vous plaît en savoir plus sur [Setup Android Volley utiliser à partir du cache] (http://stackoverflow.com/questions/31897189/android-setup-volley-to-use-from-cache/32022946 # 32022946) – BNK

+0

Je le ferai, mais pouvez-vous expliquer où est le problème ici? – Reyjohn

+0

Peut-être que votre application serveur n'autorise pas la mise en cache. Vous pouvez essayer 'Cache.Entry cacheEntry = HttpHeaderParser.parseCacheHeaders (réponse);' inside 'parseNetworkResponse' – BNK

Répondre

1

Volley n'a pas besoin d'utiliser uniquement l'URL comme clé de cache.

Appelez Request.getCacheKey() pour obtenir la clé de cache.

/** 
* Returns the cache key for this request. By default, this is the URL. 
*/ 
public String getCacheKey() { 
    return mMethod + ":" + mUrl; 
} 

/** 
* Supported request methods. 
*/ 
public interface Method { 
    int DEPRECATED_GET_OR_POST = -1; 
    int GET = 0; 
    int POST = 1; 
    int PUT = 2; 
    int DELETE = 3; 
} 

The issue on Github.