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