我有一個XML文件,我在我的Android應用程序中解析。如果文件沒有被更改,我想不要解析它。簡單的方法來檢查服務器上的文件是否已更改,而無需下載
我能得到的時候,我的文件的最後修改,我可以得到在格林尼治標準時間服務器頭的最後修改日期,但我不知道現在做什麼...
//this is a string: status.getHeader("last-modified");
//Shows like so: Tue, 05 March 2013 16:45:02 GMT
String serverlastmodified = status.getHeader("last-modified");
Log.e("Header",serverlastmodified);
Date s = status.getTime();
String filelastgotten = s.toGMTString();
//String shows like so: 5 Mar 2013 19:41:43 GMT
Log.e("LM", filelastgotten);
//this needs to be a great-than/less-than?
//But I cannot do that to a string... so change to int?
if(serverlastmodified.equals(filelastgotten)){
Log.e(TAG,"YES!");
}else{
Log.e(TAG,"NO!");
}
編輯:::::::::
這是怎麼回事?
我結束了,只是確保兩個日期不一樣,使用SimpleDateFormat和toGMTString();
String serverLastModified = status.getHeader("last-modified");
SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyy HH:mm:ss zzz");
Date d = null;
try {
d = sdf.parse(serverLastModified);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Date fileLastGotten = status.getTime();
Log.e("DATE1", d.toGMTString());
Log.e("DATE2", fileLastGotten.toGMTString());
if (d.before(fileLastGotten)) {
Log.e("DS", "YES!");
} else {
Log.e("DS", "NO!");
}
嗨atreat,感謝您的評論。所以服務器XML文件應該有一個與它相關的MD5,然後我的應用程序會解碼這個並比較?我不確定XML文件是否具有此功能。如果我嘗試使用status.getHeader(「Content-MD5」);我得到空...所以我想不是。有什麼想法嗎? – jasonflaherty 2013-03-05 22:17:49
MD5不是該文件將包含的內容。如果您轉到UNIX命令行,則可以鍵入「md5」以查看文件的MD5。基本上它所做的就是將文件的各個部分壓縮成一個唯一的字符串。如果文件更改,MD5也會更改。我會閱讀MD5哈希算法和其他哈希算法。它們可能非常有用。 –
atreat
2013-03-05 22:23:08
是的,那麼需要在服務器級別創建一些東西?然後我可以使用getHeader()來獲取它? – jasonflaherty 2013-03-05 22:35:03