开发者

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

I开发者_运维问答 am parsing Xml file located in web server and storing parsed data in to database. for my app I am using data from database. I need to parse the xml file only if the file is modified otherwise no need to parse. So how can I know the file is modified? I know I can use "if-modified-since" header. But I need some examples of "if-modified-since" header

please help me.......


Since you are retrieving your .xml file from a web server, this should be relatively easy without having to do a server side MD5 sum.

If you are doing a HTTP request for the xml file you can simply perform a HEAD request from the web server and this will return if the file has changed/modified or if it doesn't exist. This is also lightweight and the best part is that the server should already do this for you.

Edit: re-reading your question, looks like you had the same idea. Here's the code.

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;
}

See:

  • HttpURLConnection
  • HyperText_Transfer_Protocol HttpStatus 304 (Not Modified)

Alternatively if your server supports them you can use ETags to find out if your file has been modified.

  • http://www.xpertdeveloper.com/2011/03/last-modified-header-vs-expire-header-vs-etag/


Calculate the MD5 of the file. You can save the old one and compare it?

If you don't know how, check out this for example: Getting a File's MD5 Checksum in Java

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜