我正在使用
Android Volley来缓存请求,这在我使用GET时工作正常,但我出于某些原因切换到使用POST.现在我想用不同的POST数据缓存相同的URL.
>请求1 – > URL1,POST数据=“Cat = 1”
>请求2 – > URL1,POST数据=“Cat = 2”
>请求3 – > URL1,POST数据=“Cat = 3”
这可以通过Android Volley来完成
解决方法
因为Volley.Request.getCacheKey()返回的URL在我的情况下是相同的;这不适合我.
相反,我必须覆盖我的子类中的getCacheKey()以返回URL POST(key = Value)
这样我就可以使用不同的POST数据缓存对同一URL发出的所有POST请求.
当您尝试检索缓存的请求时,您需要以相同的方式构造缓存键.
所以这是我的代码的快照:
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; } }
在构造新请求时,您可以使用getCacheKey()在将缓存请求放入请求队列之前先搜索缓存请求.
我希望这有帮助.