桌面应用程序如何从网站获取信息?
Posted
技术标签:
【中文标题】桌面应用程序如何从网站获取信息?【英文标题】:How does a desktop application get information back from a website? 【发布时间】:2010-12-25 07:38:45 【问题描述】:我是一名桌面应用程序开发人员。我正在创建一个基本网站,用于销售我编写的应用程序,并在此过程中学习了一些网络技术,但还没有学到很多东西(我选择的 CMS - Textpattern - 到目前为止让我学习了很多 php )。
我希望我的桌面应用程序调用我的网站并说“我是 xxxx 版本”,我需要它来获得响应 - 至少“有/没有更新”,最好还有“它是一个 xKB 下载并具有这些功能...” - 这样我就可以向用户显示信息并询问他们是否要下载它。
我可以从我的应用程序发送一个请求(一旦我了解了 Qt 的 QtNetwork 模块)。我的问题是,我需要学习什么才能从网站创建和发送适当的响应。
我可以学习任何必要的新技术/语言,我只是想确保我学习的是正确的东西,而不是走错路。非常感谢任何帮助。
【问题讨论】:
只是为了澄清 - 这是我在网站上所做的事情,我遇到了问题。 Qt 确实具有发送 HttpRequest 的能力。但是诸如“回显某些东西”或“让您的服务器端响应”或“php 脚本检查”之类的短语对我来说意义不大。我该怎么写才能做到这一点? 【参考方案1】:使用网络服务的最简单方法是通过 REST:
这是一个非常快速和肮脏的 PHP 脚本,在您的服务器 document_root 中保存为“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 ...
【讨论】:
谢谢,这就是我正在寻找的东西(我认为),但是“需要更新”在哪里得到“打印”?我的应用程序将如何读取它? 您的应用程序会将其读取为您请求的网页的响应。然后,您的应用程序只需接收该响应并将其显示给用户。 Rigth - PHP 端的输出(打印)将成为调用网页的函数的返回字符串。我已经更新了我的答案以反映这一点【参考方案2】:最简单的方法是使用 HTTP 协议。将应用程序版本作为获取参数传递(即“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 如果您使用与“x.x.x”不同的版本字符串,那么您需要根据需要更改代码。如果您决定只使用单个版本号,则可以将数组内容替换为单个 if($version
如果有可能获得比当前版本更新的版本(例如,在测试、beta 等期间),那么该代码可能会错误地报告更新(例如,如果用户有 2.0.0 测试版本,并且“官方”版本是 1.3.0,然后它会说需要更新,因为 0
【讨论】:
【参考方案3】:带有 XML/JSON 的 HTTP 是一个很好的起点。
让您的服务器端响应通过 HTTP 发送的 XML/JSON 查询。
在您的情况下,它很可能是您的 Web 服务器正在提供的 XML 文档。
【讨论】:
【参考方案4】:这可以像让您的应用发出请求一样简单
http://website.com/checkupdates.php?v=<current_version>
您的程序填写 current_version。
php 脚本检查是否有新版本并相应地响应信息。
【讨论】:
以上是关于桌面应用程序如何从网站获取信息?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Java 桌面应用程序中的重定向 uri 获取 facebook 代码