Как заставить сервер каждый раз проверять сайт? Как я могу запустить скрипт на сервере?

Я создаю приложение для Android, которое принимает URL-адрес продукта в качестве входных данных от пользователя и проверяет, упала ли цена продукта. Он уведомляет пользователя с помощью push-уведомления, когда цена падает.

У меня есть код, который получает цену продукта на Amazon. Но я не уверен, как действовать дальше.

Согласн. для меня сервер будет только размещать файлы, чтобы он был доступен в Интернете. Я прав?? Но мне нужен сервер, на котором выполняется мой код и который отслеживает любые изменения на странице.

Что делать дальше?


person Nikhil    schedule 14.01.2015    source источник


Ответы (2)


Если вы хотите «мониторить цену на Амазоне», вам придется проводить опрос (отправлять периодические запросы) на Амазон.

Вы можете заставить приложение выполнять всю работу (поместить код для получения страницы Amazon, проанализировать ее для определения цены и т. д.), но это вызывает проблемы, если/когда страницы меняются, вы хотите изменить частоту опроса и т. д. Это имеет преимущество. что устройство пользователя не может быть отрезано как "бот" от Amazon.

Вы должны сделать это на сервере, используя для опроса сам веб-сервер, а не приложение. Сервер должен поддерживать добавление элемента для проверки, уведомление пользователя и последующее удаление элемента. Это намного сложнее, чем кажется, и Amazon может отключить ваш сервер, потому что по сути это «бот», пытающийся получить информацию о ценах без «покупок».

Существует ряд веб-серверов, поддерживающих запуск серверных процессов в фоновом режиме для выполнения всего этого. Вы можете запустить что-то вроде Tomcat (от Apache) или купить что-нибудь. Если вы не знакомы с веб-серверами или чем-то вроде PHP/JSP, вам предстоит пройти долгий путь...

person Jim    schedule 14.01.2015
comment
Спасибо @Jim, я тоже имею в виду, что сервер проводит опрос. Как я могу получить больше информации об этом? - person Nikhil; 14.01.2015

Вам нужно написать парсер для ответа амазонки. Время от времени посылайте запрос на сервер.

public class TimeService extends Service {
public static final long NOTIFY_INTERVAL = 5*60 * 1000; // 5 min
private Handler mHandler = new Handler();
private Timer mTimer = null;

@Override
    public IBinder onBind(Intent intent) {
        return null;
    }
@Override
    public void onCreate() {
        if(mTimer != null) {
            mTimer.cancel();
        } else {
            mTimer = new Timer();
        }
        mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0, NOTIFY_INTERVAL);
    }
class TimeDisplayTimerTask extends TimerTask {
@Override
        public void run() {
            // run on another thread
            mHandler.post(new Runnable() {
@Override
                public void run() {
                    // call request to amazon server
}
});
        }

вызов из активности

startService(new Intent(this, TimeService.class));
register in manifest

<application
.... >
.....

‹служба android:name=".TimeService"/›

}

person QArea    schedule 14.01.2015