我正在使用排球库:
compile 'com.mcxiaoke.volley:library:1.0.18'
在http helper类中,我有以下方法。
public static JsonRequest createRequest(String responseType, int requestMethod, String scheme,
String url, final String requestParams, final HttpResponseListener listener,
Request.Priority priority) throws UnsupportedEncodingException {
// Start to prepare request URL
Uri.Builder builder = new Uri.Builder();
builder.scheme(scheme).encodedAuthority(url);
// GET REQUESTS - append the params into URL
if (requestMethod == Request.Method.GET && requestParams != null) {
boolean append = appendParamsToUrl(requestParams, builder);
if(!append) return null;
}
url = URLDecoder.decode(builder.build().toString(), Constants.Request.DEFAULT_ENCODING);
// Get response as JSON object
JsonRequest request;
if (responseType.equals(Constants.Request.JSON_OBJECT)) {
// Prepare request and set the Callbacks
request = new CustomJsonObjectRequest(requestMethod, url, requestParams,
priority, responseListener(listener), errorListener(listener), listener);
}else { // Get response as JSON array of objects
// Prepare request and set the Callbacks
request = new CustomJsonArrayRequest(requestMethod, url, requestParams,
priority, responseArrayListener(listener), errorListener(listener), listener);
}
request.setTag(REQUEST_TAG);
request.setShouldCache(false);
return request;
}
当我使用选项时:
request.setShouldCache(false);
强制禁用缓存。
但是当我从POSTMAN(用于API测试的Chrome扩展程序)获得服务器的响应时,我得到的响应值不同于Android设备。
我也尝试过使用:
queue.getCache().clear();
但结果相同。
如何强制禁止缓存响应?
非常感谢任何建议。
答案 0 :(得分:1)
request.setShouldCache(false);
对于GET请求,似乎不够。 但是,在添加到队列之前清除缓存似乎有帮助
myRequestQueue.getCache().clear();
我在退回getRequestQueue()
之前将其放入我的Volley单身人士的requestQueue
方法中。
答案 1 :(得分:1)
请致电以下人员:
myRequestQueue.getCache().remove(url);
答案 2 :(得分:0)
要使用没有响应缓存的Volley,而不是使用Volley.newRequestQueue(),您可以按如下方式创建自己的RequestQueue:
HttpStack stack;
if (Build.VERSION.SDK_INT >= 9) {
stack = new HurlStack();
} else {
stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
}
Network network = new BasicNetwork(stack);
queue = new RequestQueue(new NoCache(), network);
关键是NoCache对象,它实现了Volley Cache接口但什么也没做。
奖励:如果需要,您还可以使用OkHttp(随应用附带)实施HttpStack。这种方法的好处在于,既然您使用应用程序发布了OkHttp库,那么您可以放心,您的HttpStack实现将始终适用于所有Android版本,因为您不依赖于平台的HttpStack实现。另外OkHttp有各种各样的好东西,比如拦截机制和一个非常简单的API。