桌面应用程序如何从网站获取信息?

4
我是一名桌面应用程序开发者。我正在创建一个基本的网站来销售我编写的应用程序,并在此过程中学习一些网络技术,但目前还没有学到很多(我选择的CMS - Textpattern - 目前已经帮我省去了很多学习PHP的时间)。
我想让我的桌面应用程序调用我的网站并发送“我是版本x.x.x.x”的信息,然后我需要得到一个响应——至少是“有/没有更新”,最好还包括“它是一个xKB的下载,并且具有这些功能...”,以便我可以向用户显示此信息并询问他们是否想要下载它。
我可以从我的应用程序中发送请求(一旦我弄清楚Qt的QtNetwork模块)。我的问题是,为了能够创建并发送适当的响应,我需要学习什么?
我可以学习任何必要的新技术/语言,我只想确保我正在学习正确的东西,而不是走错路。非常感谢您的任何帮助。

只是想澄清一下 - 我在网站上的操作有问题。Qt确实有发送HttpRequest的能力。但是像“回显一些内容”、“让服务器端响应”或“php脚本检查”这样的短语对我来说意义不大。我该如何编写代码来实现这些功能? - issy
4个回答

2
最简单的方法是使用HTTP协议。将应用程序版本作为get参数传递(例如“www.yoursite.com/auto/update.php?version=1.0.2”),并回显一些内容而不是HTML,例如“up to date”或“new version:1.1.0”。
对于桌面端,无论您使用哪种语言和平台,都有许多库可以帮助您(不确定QT是否包括HTTP相关内容,尽管您可以自己完成所有HTTP头部处理)。
编辑:对于php端要做的事情,您可以像这样简单地实现:
(希望这个逻辑是正确的,我只是快速想出来的 :) )
<?php
    //change this whenever you bring out a new version
    $current_version = array(1, 1, 0);

    $version = $_GET['version'];

    //split the version string into the 3 numeric parts
    $version = split('.', $version);

    //compare $version and $current_version
    if(    $version[0] < $current_version[0]
        || $version[1] < $current_version[1]
        || $version[2] < $current_version[2])
    {
        echo "update_needed, $current_version[0].$current_version[1].$current_version[2]";
    }
    else echo "up_to_date";
?>

如果你使用的版本字符串与"x.x.x"不同,则需要根据需要更改代码。如果你决定只使用一个版本号,可以使用单个if($version < $current_version)替换数组内容。

如果可能获取到比当前版本更新的版本(例如在测试、beta等情况下),那么该代码可能会错误地报告更新(例如,如果用户有一个2.0.0测试版本,而"official"版本是1.3.0,则它将说需要更新,因为0 < 3),因此你需要修改它以处理该问题,但你应该明白这个想法。


2

使用Web服务的最简单方法是通过REST:

以下是一个非常快速和简单的PHP脚本,保存在您的服务器文档根目录下,命名为“versioncheck.php”,只是为了简单地传达要点:

<?
define ("CURRENT_VERSION", "5");

$version = $_REQUEST['version'];

if ($version < CURRENT_VERSION) print "Update required";
else print "YOU'RE ALL GOOD";
?>

您的应用程序将调用http://wwww.yoursever.com/versioncheck.php?version=2

假设您的桌面应用程序具有名为“getHTTP”的函数,该函数可以检索HTTP页面。 变量“currentVersion”是您的桌面应用程序的当前版本号。
因此,您的代码应如下所示:

//NOTE: I don't know the syntax of your desktop app's language, so just treat this as highlevel pseudo code.

/** all sorts of other goodness **/
//CheckVersion
upgrade = getHTTP("http://wwww.yoursever.com/versioncheck.php?version="+currentVersion); 
if (upgrade == "Update Required") then doUpdate(); // doUPdate is some function you've defined to act as a handler for when an update needs to occur
else
{
... continue on with app ...
}

谢谢,这正是我需要的(我想),但“Update required”在哪里被“打印”?我的应用程序如何读取它? - issy
你的应用程序将读取它作为你请求的网页的响应。然后,你的应用程序只需获取该响应并将其显示给用户。 - macca1
正确 - PHP端的输出(打印)将成为调用网页的函数的返回字符串。我已更新我的答案以反映这一点。 - ChronoFish

0

它可以非常简单,只需让您的应用程序向其发出请求即可

http://website.com/checkupdates.php?v=<current_version>

你的程序填充了 current_version。

PHP 脚本检查是否有新版本,并根据信息做出响应。


0

使用XML/JSON的HTTP是一个很好的起点。

让你的服务器响应通过HTTP发送的XML/JSON查询。

在你的情况下,它可能只是由你的Web服务器提供的一个XML文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接