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

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 代码

如何在 Flutter 应用中添加桌面版网站?

如何从桌面应用程序登录到 OWIN Web Api 2 WS-Federation 服务器

获取 Spotify 桌面播放器状态

如何使用.net桌面应用程序复制网站的内容[关闭]

可以从 flex 网络应用程序获取桌面通知吗?