Android:如何知道位于网络服务器的文件被修改了?

标签 android file web-applications

我正在解析位于 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;
}

参见:

或者,如果您的服务器支持它们,您可以使用 ETag 来查明您的文件是否已被修改。

关于Android:如何知道位于网络服务器的文件被修改了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6691825/

相关文章:

android - 使用 Android SDK (OpenSL) 解码 ogg 和其他压缩音频文件格式

android - Eclipse 转 Maven 不允许使用 APK 打包

javascript - 按钮点击动画

security - 是否可以制作一个具有离线敏感数据存储功能的本地 Chrome Web 应用程序?

android - Crashlytics 报告上传因 java.lang.OutOfMemoryError 而崩溃

java - Retrofit2获取数据GSON抛出 "Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 41 path $.data"

C(或嵌入式脚本)函数将直观地打开 .txt 文件

ios - 用于 iOS 开发的 Qt : File read and write

Java访问大文件

session - 什么会导致 IIS 应用程序重置?