Android:如何知道位于Web服务器中的文件是否被修改?

Pra*_*u M 8 android web-applications file

我正在解析位于Web服务器中的Xml文件并将解析后的数据存储到数据库中.对于我的应用程序我使用数据库中的数据.我只需要在修改文件时解析xml文件,否则无需解析.那我怎么知道文件被修改了?我知道我可以使用"if-modified-since"标题.但我需要一些"if-modified-since"标题的例子
请帮帮我.......

Jus*_*eld 17

由于您是从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;
}
Run Code Online (Sandbox Code Playgroud)

看到:

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