Android: как узнать, что файл, расположенный на веб-сервере, изменен? - PullRequest
8 голосов
/ 14 июля 2011

Я анализирую файл XML, расположенный на веб-сервере, и сохраняю проанализированные данные в базе данных. для моего приложения я использую данные из базы данных. Мне нужно проанализировать XML-файл, только если файл изменен, иначе нет необходимости анализировать. Так как я могу узнать, что файл изменен? Я знаю, что могу использовать заголовок "if -ified-Since". Но Мне нужны некоторые примеры заголовка "if -ified-Since"
пожалуйста, помогите мне .......

Ответы [ 2 ]

17 голосов
/ 14 июля 2011

Поскольку вы извлекаете файл .xml с веб-сервера, это должно быть относительно просто без необходимости суммирования MD5 на стороне сервера.

Если вы выполняете HTTP-запрос для файла XML, вы можетепросто выполните запрос 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, чтобы узнать, был ли ваш файл изменен.

1 голос
/ 14 июля 2011

Рассчитать MD5 файла.Вы можете сохранить старый файл и сравнить его?

Если вы не знаете, как это сделать, проверьте это, например: Получение контрольной суммы MD5 файла в Java

...