曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費(fèi)者
P O S T是由使用I n s t r()函數(shù)的用戶產(chǎn)生的。如果第一個(gè)指定的串包含一個(gè)第二個(gè)串的結(jié)果
(“G l a s g o w”在第一個(gè)交易里),該函數(shù)將返回一個(gè)大于零的數(shù)。在這種情況下,那么將參數(shù)定
義為G l a s g o w(因?yàn)镚 e t S u b j e c t()期望一個(gè)參數(shù))。然后, X M L - R P C使用如下格式產(chǎn)生遠(yuǎn)程服
務(wù)器調(diào)用。
顯然,該應(yīng)用程序適合于我們的那些單一服務(wù)器,服務(wù)器查詢以默認(rèn)方式在本地服務(wù)器
上生成。但是,在X M L - R P C調(diào)用里的U R L能夠被轉(zhuǎn)換到任何遠(yuǎn)程服務(wù)器,只要該服務(wù)器
支持對于該應(yīng)用程序的XML-RPC接口。
在單一服務(wù)上測試它的簡單方法是在5個(gè)不同的端口上設(shè)置5個(gè)測試站點(diǎn),并且在X M L -
RPC 調(diào)用里更改URL,來反映此功能。
對X M L - R P C調(diào)用的返回值是一個(gè)數(shù)組,該數(shù)組是一個(gè)被查詢地點(diǎn)的相關(guān)主題使用逗號定界
的數(shù)組,因此,使用split( )方法來得到主題的一個(gè)一維數(shù)組。然后再次通過這個(gè)數(shù)組將一個(gè)I D、
主題標(biāo)題和城市描述加到記錄集中,我們對每一個(gè)被用戶選定的分布地區(qū)重復(fù)X M L - R P C調(diào)用,
這些地區(qū)都是在請求對象表單里被指定的。
程序清單11 - 4 0
450使用XML 高級編程
下載
第11章服服務(wù)器到服務(wù)器使用451 下載
當(dāng)重復(fù)每一個(gè)被選的主題,我們將從所有選中的地點(diǎn)得到一個(gè)完全斷開的書籍主題描述的
記錄集。如果這些記錄集不空,并且使一個(gè)主題列表返回,就把它們寫進(jìn)HTML SELECT元素,
這也是通過重復(fù)記錄設(shè)備對象來實(shí)現(xiàn)的。在這個(gè)過程中,我們調(diào)用了C h e c k D u p l i c a t e( )函數(shù)。
它保證了當(dāng)所有城市的所有主題集中在一起時(shí)且某個(gè)主題多次出現(xiàn),不會將同樣的主題寫兩次。
在下一節(jié)將對這一功能做更詳細(xì)描述。如果無主題可用的(這意味著被選城市沒有當(dāng)前的書本
儲備),那么一個(gè)適當(dāng)?shù)南⑻崾窘o用戶。
程序清單11 - 4 1
最后,我們將建立一個(gè)函數(shù),當(dāng)用戶從S E L E C T選擇一個(gè)主題并點(diǎn)擊了“ GET BOOKS”按
鍵,提交了名為p r o x y. a s p文件后,該函數(shù)將被調(diào)用,在后面我們將作描述。
程序清單11 - 4 2
452使用XML 高級編程
下載
2. 檢索書籍信息
既然已經(jīng)從選中的城市得到了相關(guān)主題,那么我們想選擇主題中的一個(gè)并得到該主題相關(guān)
的所有標(biāo)題,包括書籍的作者。下面是實(shí)現(xiàn)該功能的一個(gè)例子。在該例中用戶選中了G l a s g o w
和B i r m i n g h a m,并選中C o m m e r c e(商務(wù))作為主題,并點(diǎn)擊了“ GET BOOK”按鈕(參見圖
11 - 1 6)。
圖11-16
應(yīng)保證你已經(jīng)遵循了本章開始處的指令并將所有Wr o x下載文件拷貝到你的We b服務(wù)器的
下述目錄:<root>/xmlrpc/client/。
圖11 - 1 7說明系統(tǒng)的這個(gè)部分是如何鏈接到前一部分的,在前一部分里,用戶已經(jīng)選擇了一
個(gè)主題。
圖11-17
第11章服服務(wù)器到服務(wù)器使用453 下載
Subjects.asp
使用者選擇城市
和主題,并提交
得到相關(guān)主題信
息
Subjects.asp
向讀者顯示
書籍信息
Bookserver.asp
依靠在R P C調(diào)用里要求的方法查
詢一個(gè)本地X M L文件并將結(jié)果
返回到Proxy.asp.
X M L R P C調(diào)用方法
G e t B o o k ( ),使用被
選城市作為一個(gè)參
數(shù)
提交被選主
題和城市
P r o x y. a s p
檢查P O S T來發(fā)現(xiàn)哪一個(gè)城市被選中,
并在每一個(gè)地方為每一個(gè)被選城市
調(diào)用B o o k s e r v e r. a s p作為一個(gè)X M L -
R P C調(diào)用(如果G l a s g o w被選中,那么
該處的w e b服務(wù)器被查詢,等等)
創(chuàng)建上頁( p r o x y. a s p)的腳本基本上使用J a v a S c r i p t。但是針對A S P,當(dāng)前使用的工具都是
用V B S c r i p t來實(shí)現(xiàn)的,因此,必須有一個(gè)使用V B S c r i p t的程序,用它創(chuàng)建一個(gè)V B A r r a y對象并發(fā)
送到X M L - R P C方法。這是需要的,因?yàn)樵赬 M L - R P C方法調(diào)用里使用的參數(shù)表單將上面的請求
描述為一個(gè)參數(shù)數(shù)組(必須是一個(gè)V B A r r a y)。下面是P r o x y. a s p文件的第一部分:
程序清單11 - 4 3
然后,轉(zhuǎn)到使用J a v a S c r i p t上。首先,再次使用函數(shù)c h e c k D u p l i c a t e(),早些時(shí)候它在
S u b j e c t . a s p中已經(jīng)用過。該函數(shù)的基本功能是把值加到D i c t i o n a r y對象,并檢查該值是否已經(jīng)存
在(使用對象的E x i s t s()方法)—如果不存在,它將被加上。
程序清單11 - 4 4
函數(shù)D r a w S c r e e n()封裝了X M L - R P C代碼,該代碼將創(chuàng)建H T M L來顯示搜索的結(jié)果。我們
再次聲明參數(shù)數(shù)組和保持著書籍?dāng)?shù)據(jù)的目錄對象。同時(shí)創(chuàng)建斷開的記錄集并創(chuàng)建一個(gè)域?qū)?br />
X M L - R P C調(diào)用的響應(yīng)加進(jìn)來。下面已經(jīng)將它列出用以同V B S c r i p t比較:
程序清單11 - 4 5
454使用XML 高級編程
下載
激活遠(yuǎn)程方法的部分有一點(diǎn)細(xì)微的不同。首先檢查至少一個(gè)城市被選中,如果如此,那么
該城市將被引用:
程序清單11 - 4 6
然后使用C r e a t e V B A r r a y方法返回一個(gè)V B A r r a y類型的對象,V B A r r a y保持了該方法的參數(shù)。
然后,一個(gè)X M L - R P C調(diào)用被執(zhí)行,即使用在對應(yīng)U R L中的B o o k S e r v e r. a s p文件調(diào)用(G e t B o o k s ( ))
函數(shù),V B A r r a y列出參數(shù)被發(fā)送到這個(gè)調(diào)用(其中含有城市和主題),然后將返回每本書和它的
描述(一個(gè)記錄),并用逗號隔開(如:BookRecord1 , BookRecord2, BookRecord3,等等),結(jié)果
被附加到記錄集。
每個(gè)I D被唯一的索引k所定義,該索引標(biāo)識一個(gè)包含書的標(biāo)題和書的作者的記錄。
程序清單11 - 4 7
創(chuàng)建一個(gè)報(bào)頭來聲明主題和被查詢的城市。然后重復(fù)記錄集,對每一個(gè)記錄都有一個(gè)條目
第11章服服務(wù)器到服務(wù)器使用455 下載
(不是“ no title”,它的返回是該指定主題內(nèi)無此書),我們保證它仍然未被寫過。如果它仍然未
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(142)