繁体   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