在我的安卓应用程序中,我正在尝试缓存Http Client的响应。我使用Facebook Graph API进行此任务的测试,并具有以下网址:https://graph.facebook.com/riz.ahmed.52
首次获取“first_name”并显示它。然后更改我的Facebook个人资料的名字并再次调用相同的链接。我期望得到旧/已缓存的“first_name”,但我得到了更新后的结果。每当我调用该URL时,控制台始终显示“响应来自上游服务器”消息。
我的Http Client代码如下:
我正在使用 Android 2.3.3。请告诉我我错过了什么。
我的Http Client代码如下:
CacheConfig cacheConfig = new CacheConfig();
cacheConfig.setMaxCacheEntries(1000);
cacheConfig.setMaxObjectSizeBytes(8192);
//HttpClient httpclient = new CachingHttpClient(new DefaultHttpClient(), cacheConfig);
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
// Updated code [START]
httpclient.addResponseInterceptor(new HttpResponseInterceptor() {
public void process(
final HttpResponse response,
final HttpContext context) throws HttpException, IOException {
response.removeHeader(response.getFirstHeader("Pragma"));
response.removeHeader(response.getFirstHeader("Expires"));
}
});
// Updated code [END]
HttpGet httpget = new HttpGet(url);
// Execute HTTP Get Request
HttpResponse response = httpclient.execute(httpget, localContext);
HttpEntity entity = response.getEntity();
String res = EntityUtils.getContentCharSet(entity);
CacheResponseStatus responseStatus = (CacheResponseStatus) localContext.getAttribute(
CachingHttpClient.CACHE_RESPONSE_STATUS);
switch (responseStatus) {
case CACHE_HIT:
System.out.println("A response was generated from the cache with no requests " +
"sent upstream");
break;
case CACHE_MODULE_RESPONSE:
System.out.println("The response was generated directly by the caching module");
break;
case CACHE_MISS:
System.out.println("The response came from an upstream server");
break;
case VALIDATED:
System.out.println("The response was generated from the cache after validating " +
"the entry with the origin server");
break;
}
我正在使用 Android 2.3.3。请告诉我我错过了什么。
HttpResponse response = httpclient.execute(httpget, localContext);
返回的结果来做,那么你可能太晚了,无法使其正常工作。 - Jens