2009-12-10 121 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腳本檢查是否有新版本,並相應地回覆信息。