我正在使用Android Volley来缓存请求,这在我使用GET时工作正常,但我出于某些原因切换到使用POST。现在我想用不同的POST数据缓存相同的URL。
这可以通过Android Volley来完成
答案 0 :(得分:12)
因为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();// not do another request
return temp;
}
}
当您构建新请求时,可以使用getCacheKey()在将缓存请求放入请求队列之前先搜索缓存请求。
我希望这会有所帮助。