如何让服务器每次都检查一个站点?我如何 运行 服务器上的脚本?
How can I make the server check a site every time? How can I run a script on a server?
我正在构建一个 android 应用程序,它将产品 URL 作为用户输入并检查产品价格是否下降。当价格下降时,它会通过推送通知通知用户。
我有一些代码可以获取亚马逊上的产品价格。但是,我不确定如何从现在开始。
符合。对我来说,服务器只会托管文件,因此它可以在 Internet 上使用。我对吗??
但我想要一个运行我的代码的服务器 - 它监视页面的任何更改。
下一步怎么办?
您需要为亚马逊答案编写解析器。 A并时不时向服务器发送请求。
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
}
});
}
来自 activity
的电话
startService(new Intent(this, TimeService.class));
register in manifest
<application
.... >
.....
<服务android:name=".TimeService"/>
应用>
}
如果你想 "monitor the price on Amazon" 那么你将不得不轮询(发送定期请求)到亚马逊。
您可以让应用程序完成所有工作(将代码放入检索亚马逊页面,解析价格等)但这会导致问题 if/when 页面更改,您想更改轮询频率等。它的优点是用户的设备可能不会被亚马逊切断为"bot"。
您应该在服务器上执行此操作,使用网络服务器本身进行轮询,而不是应用程序。服务器需要支持添加要检查的项目、通知用户然后删除项目。这比听起来复杂得多,亚马逊可能会关闭您的服务器,因为它本质上是一个 "bot" - 试图在没有 "shopping experience."
的情况下获取定价信息
有许多 Web 服务器支持在后台 运行ning 服务器进程来执行所有这些操作。您可以 运行 类似 Tomcat 的东西(由 Apache 提供)或购买一些东西。如果您不熟悉 Web 服务器或诸如 PHP/JSP 之类的东西,那么您还有很长的路要走...
我正在构建一个 android 应用程序,它将产品 URL 作为用户输入并检查产品价格是否下降。当价格下降时,它会通过推送通知通知用户。
我有一些代码可以获取亚马逊上的产品价格。但是,我不确定如何从现在开始。
符合。对我来说,服务器只会托管文件,因此它可以在 Internet 上使用。我对吗?? 但我想要一个运行我的代码的服务器 - 它监视页面的任何更改。
下一步怎么办?
您需要为亚马逊答案编写解析器。 A并时不时向服务器发送请求。
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
}
});
}
来自 activity
的电话startService(new Intent(this, TimeService.class));
register in manifest
<application
.... >
.....
<服务android:name=".TimeService"/>
应用> }
如果你想 "monitor the price on Amazon" 那么你将不得不轮询(发送定期请求)到亚马逊。
您可以让应用程序完成所有工作(将代码放入检索亚马逊页面,解析价格等)但这会导致问题 if/when 页面更改,您想更改轮询频率等。它的优点是用户的设备可能不会被亚马逊切断为"bot"。
您应该在服务器上执行此操作,使用网络服务器本身进行轮询,而不是应用程序。服务器需要支持添加要检查的项目、通知用户然后删除项目。这比听起来复杂得多,亚马逊可能会关闭您的服务器,因为它本质上是一个 "bot" - 试图在没有 "shopping experience."
的情况下获取定价信息有许多 Web 服务器支持在后台 运行ning 服务器进程来执行所有这些操作。您可以 运行 类似 Tomcat 的东西(由 Apache 提供)或购买一些东西。如果您不熟悉 Web 服务器或诸如 PHP/JSP 之类的东西,那么您还有很长的路要走...