Как получить данные с сервера и обновить базу данных с ее помощью? - PullRequest
5 голосов
/ 20 сентября 2010

Я внедряю приложение для Android и не могу понять, как решить эту проблему: когда пользователь нажимает кнопку обновления, я хочу подключиться к моему серверу и проверить, есть ли какое-либо обновление данных, если есть, я хочу получить данные с сервера и обновить базу данных. Должен ли я использовать XML-структуру для проверки и получения обновлений с сервера, или есть ли более разумные способы для достижения этой цели?

1 Ответ

6 голосов
/ 20 сентября 2010

Да, есть более разумный способ сделать это, хотя это потребует некоторой работы как на стороне сервера, так и на стороне клиента.Вот как это работает: все данные должны быть доступны для загрузки в формате JSON или XML (я бы предпочел JSON).Итак, у вас будет что-то вроде этого на сервере: http://example.com/resource.json. Чтобы узнать, есть ли новая версия данных, вы можете добавить версию заголовка в ответ HTTP (таким образом, вы ненеобходимо загрузить и проанализировать весь ресурс, чтобы узнать, есть ли новая версия).

Чтобы проверить эти заголовки, у вас будет что-то вроде этого:

URLConnection urlConnection = null;
try {
    urlConnection = url.openConnection();
    urlConnection.connect();

    String currentVersionHeader = urlConnection.getHeaderField("your-version-header");
    if( currentVersionHeader == null ) {
        currentVersionHeader = "-1";
    }

    int version = Long.parseLong(currentVersionHeader);

    // then you compare with the old version
    if( oldVersion < version ){
        // download the data
    }
} catch (Exception e) {}

Загрузка и анализ JSON-ресурса - это то, что уже было обработано, и вы найдете множество учебных пособий и ссылок в Google и здесь.

Вы не предоставляете подробности о стороне сервера (PHP? Java?.NET?), Поэтому я также не буду давать вам подробности о том, как реализовать / добавить заголовок версии.Я только что объяснил вам, как лучше всего делать подобные вещи, основываясь на моем собственном опыте.

...