2011-11-01 92 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實現。