曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
< v a l u e >元素。不同的類型在一個數組中能夠被混合。如果一個< a r r a y >元素包含一個數組或結構,
它們甚至能被遞歸。數組適用于兩種情況:一是將傳送的數據(例如關于一個對象的狀態消息)
由一系列的參數所組成,而這些參數在設計時并不知道;二是參數很多,而你希望以數組形式
傳送它們而不是采取分散的個體形式,下面是一個例子:
第11章服服務器到服務器使用437 下載
程序清單11 - 1 6
(8) 結構
結構允許你對于值的順序采取一些智能的辦法,它不像數組,數據有一個簡單的順序,結
構在< s t r u c t >元素中指定,它包含一個或幾個< m e m b e r >元素(并無數量限制)。其中,依次序有
< n a m e >和< v a l u e >元素保存數據,像數組一樣,結構是可遞歸的,并且也能包含數組,下面是一
個有關X M L - R P C結構的例子:
程序清單11 - 1 7
438使用XML 高級編程
下載
看了上面這些代碼,你可能想到X M L方法能夠減少許多冗余,如:
程序清單11 - 1 8
對于X M L規范,有許多理由使之沒有以這樣的方式進行定義。其中之一是X M L - R P C結構定
義的方式與傳統編程語言里的結構(或者目錄對象)十分相似,在傳統的編程語言里我們有明
確的名字/值對。
4. 響應的報頭
響應的第一行將是一個合法的2 0 0OK的H T T P的報頭(除非服務器自身有一個低級錯誤),
下面是t e x t / x m l的C o n t e n t - Ty p e(內容形式)和一個正確的C o n t e n t - l e n g t h(內容長度),下面是一
個例子(D a t e和S e r v e r是隨意的):
程序清單11 - 1 9
5. 響應的格式
響應的有效負載必須有一個結構。結構中, < m e t h o d R e s p o n s e >元素能夠包含一個唯一的
< p a r a m s >元素,該元素又封裝一個唯一的< p a r a m >元素,該< p a r a m >元素又包含唯一的< v a l u e >
元素。
程序清單11 - 2 0
第11章服服務器到服務器使用439 下載
如果有錯誤,響應也能包含出錯信息,我們看一下這個方面的有關問題。
6. 出錯響應
既然可以進行成功響應,那響應也能夠返回一個出錯消息。在<method Response>元素里包
含一個< f a u l t >元素,該< f a u l t >元素又包含一個< v a l u e >元素, < v a l u e >元素包含一個含有兩個數
據的< s t r u c t >元素,一個用< i n t >值調用錯誤代碼( f a u l t C o d e);另一個字符串叫做f a u l t S t r i n g來
指明出錯理由。
下面是一個例子:
程序清單11 - 2 1
11.3.4 XML-RPC的實現
X M L - R P C被分成兩個組件,叫做客戶和服務器,客戶獨立于服務器。因此一個運行在
Windows NT服務器上的C O M客戶能夠調用在Unix Apache服務器上的P e r l編寫的方法。
X M L - R P C可通過P y t h o n、J a v a、P e r l、Tc l、A S P、C O M和P H P實現。對于每一種方式的進
一步描述參見X M L - R P C部分的“到哪里去”一節。
1. 一個簡單的例子
下面這個例子將對以上某些語言加以說明并顯示如何調用一個遠程的方法,該方法返回了
儲蓄賬戶的余額。該例將分成“ X M L請求”、“客戶的實現”、“X M L響應”、“服務器的實現”等
幾個方面。
這個例子是基于A S P和MS IIS的,雖然能使用另外的技術編寫服務器并使用上述的客戶機制
進行調用—只要接口定義保持不變,就沒有問題。就是一個漂亮的X M L - R P C。
在開始這個例子之前,在We b服務器上,把所有的例子文件放到目錄< r o o t > / x m l r p c / c l i e n t /下,
并且從指定的U R L上下載A S P客戶/服務器文件(U R L在下面的“到哪里去”部分給出),其中要
440使用XML 高級編程
下載
保證x m l r p c . a s p文件也在目錄< r o o t > / x m l r p c / c l i e n t /下。
同樣,在同一個U R L下,使用R e g S v r 3 2實用程序注冊C O M組件。保證安裝指令(裝載I E 5等)
使你能成功地裝載R P C工具。
注意注冊這個組件,打開一個命令行窗口,輸入
RegSvr32 <component name>.dll
將會彈出一個消息窗口告知這個組件已被成功注冊。
(1) XML請求
對于該例,下面這段代碼將描述了X M L - R P C的請求,在此我們將調用一個稱為G e t C u r r e n t
B a l a n c e()的本地方法,該方法接受一個賬號作為參數。
程序清單11 - 2 2
我們看到希望調用的方法稱為G e t C u r r e n t B a l a n c e(),并將賬號定義為雙精度型。
在目標平臺上使用X M L - R P C方法,開發商僅僅需要提供參數和方法。實際的XML代碼將
被擴展成起始方法調用的一部分, H T T P的P O S T方法將用來代表用戶。讓我們看一看怎樣通過
使用四種語言即A S P、C O M ( V B )、J a v a和P H P實現該功能的。
如果想按自己的方法試驗一個例子,可以參見“到哪里去”一節,并下載合適的X M L -
RPC工具。
(2) ASP
程序清單11 - 2 3
(3) COM(Visual Basic)
第11章服服務器到服務器使用441 下載
程序清單11 - 2 4
(4) Java語言
程序清單11 - 2 5
(5) PHP
程序清單11 - 2 6
(6) XML響應
X M L對于上面請求的響應有如下結構:
程序清單11 - 2 7
如果在調用中存在問題,將收到一個如下的響應。下面的X M L說明在與X M L - R P C服務器聯
系時出現一個問題:
442使用XML 高級編程
下載
程序清單11 - 2 8
因為以上的錯誤代碼和錯誤串是一個Wi n 3 2錯誤,因此你將把調用打包在一個錯誤處理程序
中,應該對正在使用的特定的X M L - R P C工具參照錯誤描述進行檢查。
中國航空網 m.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(140)