ile yapılabilir edilir; Bu benim için işe yaramadı.
Onun yerine URL + POST (anahtar = değer)
farklı POST veri ile aynı URL'ye yapılan tüm POST isteklerini önbelleğe başardı Bu şekilde dönmek Çocuğum sınıfta getCacheKey() geçersiz kılmak zorunda kaldı . Önbelleğe alınan isteği geri almayı denediğinizde, önbellek anahtarını da aynı şekilde oluşturmanız gerekir.
public class CustomPostRequest extends Request<String> {
.
.
private Map<String, String> mParams;
.
.
public void SetPostParam(String strParam, String strValue)
{
mParams.put(strParam, strValue);
}
@Override
public Map<String, String> getParams() {
return mParams;
}
@Override
public String getCacheKey() {
String temp = super.getCacheKey();
for (Map.Entry<String, String> entry : mParams.entrySet())
temp += entry.getKey() + "=" + entry.getValue();
return temp;
}
}
Eğer getCacheKey kullanabilirsiniz yeni bir istek oluşturmak hiç zaman() ilk istekleri kuyrukta koymadan önce önbelleğe istek aramak için:
işte bir benim kod anlık görüntüsüdür.
Umarım bu yardımcı olur. Eğer
Map<String, String> params = yourData;
JsonArrayRequest request = new JsonArrayRequest(Request.Method.POST, url,
new Response.Listener<JSONArray>() {
... Needed codes
},
new Response.ErrorListener() {
...
}
){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
return params;
}
@Override
public String getCacheKey() {
return generateCacheKeyWithParam(super.getCacheKey(), params);
}
};
(sen ne istersen kullanabilirsiniz, burada JsonArrayRequest
kullanıyorum) bu kodu takip edebilirsiniz varolan Request
sınıfların birini kullanmak istemiyorsanız Ayrıca
mParams nesnesini nereden başlatıyorsunuz? Lütfen bana yardım et! –
Teşekkür ederim, hayatımı kurtardın. –
zamanımı kaydettim –