簡體   English   中英

Android:如何知道位於 web 服務器中的文件已修改?

[英]Android: how to know file located in web server is modified?

我正在解析位於 web 服務器中的 Xml 文件並將解析的數據存儲到數據庫中。 對於我的應用程序,我正在使用數據庫中的數據。 只有當文件被修改時,我才需要解析 xml 文件,否則不需要解析。 那么我怎么知道文件被修改了呢? 我知道我可以使用“if-modified-since”header。 但我需要一些“if-modified-since”的例子 header
請幫我.......

由於您正在從 web 服務器檢索您的 .xml 文件,因此這應該相對容易,無需進行服務器端 MD5 總和。

如果您正在對 xml 文件執行 HTTP 請求,您可以簡單地從 web 服務器執行 HEAD 請求,如果文件已更改/修改,它將不會返回。 這也是輕量級的,最好的部分是服務器應該已經為您執行此操作。

編輯:重新閱讀你的問題,看起來你有同樣的想法。 這是代碼。

import java.net.*;
import java.io.*;

// Using HTTP_NOT_MODIFIED
public static boolean Changed(String url){
    try {
      HttpURLConnection.setFollowRedirects(false);
      HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }

// GET THE LAST MODIFIED TIME
public static long LastModified(String url)
{
  HttpURLConnection.setFollowRedirects(false);
  HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection();
  long date = con.getLastModified();

  if (date == 0)
    System.out.println("No last-modified information.");
  else
    System.out.println("Last-Modified: " + new Date(date));

  return date;
}

看:

或者,如果您的服務器支持它們,您可以使用 ETags 來確定您的文件是否已被修改。

計算文件的MD5。 你可以保存舊的並比較它嗎?

如果您不知道如何操作,請查看以下示例: Getting a File's MD5 Checksum in Java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM