2009-12-10 122 views
4

我是桌面应用程序开发人员。我正在创建一个基本网站,销售我编写的应用程序,并且一路上学习了一些网络技术,但还没有学到很多东西(我选择的CMS - Textpattern - 为我节省了很多PHP到目前为止)。桌面应用程序如何从网站获取信息?

我希望我的桌面应用程序调用我的网站并说“我是xxxx版本”,并且我需要它获取回应 - 至少“有/不是更新”,最好也是“这是一个xKB下载,并具有这些功能...“ - 以便我可以向用户显示信息,并询问他们是否要下载它。

我可以从我的应用程序发送请求(一旦我把我的头转到Qt的QtNetwork模块)。我的问题是,为了能够从网站创建和发送适当的回复,我需要学习什么。

我很好,学习任何必要的新技术/语言,我只是想确保我学习的是正确的东西,而不是走错路。任何帮助深表感谢。

+0

只是为了澄清 - 这就是我的网站,我有一个问题上做的。 Qt确实有能力发送HttpRequest。但诸如“回显回显”或“让你的服务器端响应”或“php脚本检查”等短语对我来说意义不大。我该如何写一些东西来做到这一点? – issy 2009-12-10 17:00:10

回答

2
使用web服务

简单方法是通过REST:

这里是在您的服务器的document_root保存为“versioncheck.php”一个非常快速和肮脏的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 ... 
} 
+0

谢谢,这就是我正在寻找的东西(我认为),但“需要更新”在哪里“打印”?我的应用程序将如何读取它? – issy 2009-12-10 17:01:54

+0

您的应用程序会将其作为您请求的该网页的响应来读取它。然后,您的应用程序将采取该响应并将其显示给用户。 – macca1 2009-12-10 17:15:07

+0

Rigth - PHP端的输出(打印)将成为调用网页的函数的返回字符串。我已经更新了我的答案以反映这一点 – ChronoFish 2009-12-10 19:20:27

0

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

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

就你而言,它可能恰好是你的Web服务器提供的XML文档。

2

最简单的方法是使用HTTP协议。将应用程序版本作为get参数传递(即“www.yoursite.com/auto/update.php?version=1.0.2”),并将回显代替HTML,例如“最新”或“新版本: 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"; 
?> 

OBV如果您使用不同的版本字符串“xxx”,那么你需要根据需要更改代码。如果你决定只有一个版本号,你可以用一个if($ version < $ current_version)替换数组的东西。

如果有可能获得比当前版本更新的版本(例如,在测试,测试等期间),那么该代码可能会错误地报告更新(例如,如果用户有2.0.0测试版本,并且“官方“版本是1.3.0,那么它会说更新是需要的,因为0 < 3)所以你需要改变它来处理,但你希望得到的想法。

0

它可以是具有您的应用程序发出请求到

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

你的程序在CURRENT_VERSION填写简单。

php脚本检查是否有新版本,并相应地回复信息。