2011-11-01 56 views
2

我试图在我的应用程序中模拟像“缓存验证”这样的过程。 我将在设备上下载我的web应用程序的新版本(基于安卓),但我只想下载基于etag比较的新版本的文件。 有没有人如何在Android中使用Etag机制的例子?etag比较代码示例

回答

0

也许从这个图书馆(kevinsawicki)的类“HttpRequest”将帮助你。

例如:

File latest = new File("/data/cache.json"); 
HttpRequest request = HttpRequest.get("http://google.com"); 
//Copy response to file 
request.body(latest); 
//Store eTag of response 
String eTag = request.eTag(); 

//Later you can check if changes exist 
boolean unchanged = HttpRequest.get("http://google.com") 
          .ifNoneMatch(eTag) 
          .notModified(); 
1

您可以从一个HttpURLConnection类对象访问ETag字段,例如像这样:

HttpURLConnection conn = (HttpURLConnection)new URL(url).openConnection(); 
String etag = conn.getHeaderField("ETag"); 

当然,你需要确保服务器你测试这个支持ETags。

0
HttpClient httpClient = new DefaultHttpClient(); 
HttpPost httpPost = new HttpPost(url); 
try { 
      HttpResponse response = httpClient.execute(httpPost); 
      Log.d("Http Response:", response.getFirstHeader("etag").toString()); 

     } catch (ClientProtocolException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
0

你可以参考具体的春季进行ETAG生成和验证的ShallowEtagHeaderFilter实现。