如何從JavaFX應(yīng)用程序進(jìn)入RESTful網(wǎng)絡(luò)服務(wù)

字號:

JavaFX 是 Sun微系統(tǒng)公司推出的一套基于 Java 技術(shù)的產(chǎn)品家族,其目的是為從桌面機(jī)、移動設(shè)備提供一致的用戶體驗(yàn)。它與最新版本的Java SE Runtime Environment (JRE) 和 Development Kit (JDK)綁定,并且有可以直接調(diào)用Java API的能力。
    雖然JavaFX Script 運(yùn)用類似Java 和JavaScript 的程序語言,但是最重要的還是要懂得區(qū)分JavaFX與Java的不同之處。在此特別之處的理解會對那些剛剛從事探究JavaFX 是RESTful 網(wǎng)絡(luò)服務(wù)的invocation的Java開發(fā)者是有很大幫助的。
    這個十分鐘的解決方案來演示如何從Java FX 調(diào)用RESTful 網(wǎng)絡(luò)服務(wù)和如何得出結(jié)果。
    這是一個例子來展示如何命令一個提供航班離開和到達(dá)信息的RESTful網(wǎng)絡(luò)服務(wù)到JavaFX的前端。對于服務(wù)器URL,這是刪節(jié)的服務(wù)數(shù)據(jù):
    < schedule>
    < flight>
    < number>101< /number>
    < time>11:08:45< /time>
    < direction>Departure< /direction>
    < carrier>USFlair< /carrier>
    < destination>TYS< /destination>
    < origin>ATL< /origin>
    < /flight>
    < /schedule>
    問題
    怎樣從一個JavaFX應(yīng)用程序呼叫RESTful 網(wǎng)絡(luò)服務(wù)并且如何得出結(jié)果?
    解決方案
    調(diào)用一個GET RESTful網(wǎng)路服務(wù)方法并且把它的結(jié)果分析到JavaFX目標(biāo)當(dāng)中。
    定義一種容器數(shù)據(jù)結(jié)構(gòu)
    開始,在一個Flight.fx文件中,定義一個與航班元素結(jié)構(gòu)相對應(yīng)的的JavaFX分類:
    public class Flight{
    public var number: String;
    public var time: String;
    public var direction: String;
    public var carrier: String;
    public var destination: String;
    public var origin: String;
    訪問服務(wù)
    在一個主要的JavaFX應(yīng)用程序(Main.fx)或在您的設(shè)計(jì)的地方,從一個運(yùn)用JavaFX object HttpRequest (參見Listing 1)的函數(shù)loadFlightsSchedules調(diào)用一個RESTful網(wǎng)絡(luò)服務(wù)。所有相關(guān)的特性和功能都在HttpRequest公布的范圍之內(nèi)被公布。
    說明的是網(wǎng)絡(luò)服務(wù)的URL被指定為一個本地變量并且方法GET(雖然JavaFX支持PUT 和 POST)被指定為同樣名字的變量。你可以用request.enqueue()執(zhí)行網(wǎng)絡(luò)服務(wù)呼叫;如果成功了,可以用方法onInput: function(input: java.io.InputStream).來處理結(jié)果。
    分析結(jié)果
    在功能onInput: function(input: java.io.InputStream)中,Listing 1處理的XML結(jié)果是從被激活FlightsParser的網(wǎng)絡(luò)服務(wù)得來的。而FlightsParser它是一個JavaFX object javafx.data.pull.PullParser的自定義擴(kuò)展名。PullParsers支持直接詢問和基本的XML分析(與SAX分析器一樣)。
    加載從分析過的XML原理到航班目標(biāo)。你可以用目錄2種的縮寫碼。
    完成
    這個快速10分鐘的解決方案演示了如何運(yùn)用 GET 方法來調(diào)用一個RESTful 網(wǎng)絡(luò)服務(wù)和如何用最小的錯誤處理把它的結(jié)果分析到JavaFX目標(biāo)當(dāng)中。
    有關(guān)網(wǎng)絡(luò)服務(wù)處理和解析其他數(shù)據(jù)類型的細(xì)節(jié),參看JavaFX objects javafx.io.http, javafx.data.pull, 和 javafx.data.xml.