曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
X M L - R P C的實現是基于HTTP POST方法的,消息體使用X M L標記,其包含著在遠程服務
器上執行的方法和這些方法所使用的全部參數。返回的響應也是基于X M L的。
一個過程的參數和返回值也可以是簡單的數據形式,例如:邏輯型、整型、字符串、浮點
型和日期型,也可以是較復雜的數據結構,例如通過數組和結構實現的復雜的記錄和列表結構,
事實上,二進制數同樣能被B a s e 6 4編碼表示,并且允許,例如,對于一個方法調用返回一個圖
像。
B a s e 6 4編碼用于將二進制數據轉換成A S C I I文本,由于通過S M T P服務器和另外一些文本
協議傳送,所以沒有數據被誤解。B a s e 6 4編碼也是通過X M L - R P C傳送二進制編碼消息的
標準,例如GIF和JPEG。在本章最后,將做更多的描述。
這個標準的另一個重要部分是必須有一個返回值,它可能是一個結構,并由許多結果值組
成。
該標準包含了H T T P報頭要求、X M L - R P C請求、有效負載格式、X M L - R P C響應和錯誤處
理。
1. 報頭要求
U R I(Universal Resource Identifier)格式中報頭的第一行是不指定的,如果服務器僅處理
X M L - R P C調用,它能為空或者是一個單斜線。但是如果服務器處理一個混合的H T T P請求,那
么我們將使用U R I去指定指向代碼的路徑,該代碼處理X M L - R P C請求。X M L - R P C請求必須是通
過H T T P標準的P O S T方法。
一個用戶代理( U s e r- A g e n t)和主機( H o s t )必須被指定,內容形式( C o n t e n t - Ty p e)將是
t e x t / x m l。最后,正確的內容長度( Co n t e n t - l e n g t h)應被給出。
讓我們看一個實現報頭要求的例子:
程序清單11 -8
從運行在Windows NT上的F r o n t i e r客戶調用在u s e r l a n d . c o m中名叫b e t t y的服務器,上面這個
例子指定了R P C 2作為X M L - R P C請求的響應。C o n t e n t - Ty p e(內容形式)被正確的指定為
t e x t / x m l,Co n t e n t - l e n g t h(內容長度)為1 8 1,這是一個合法的X M L - R P C請求。
2. 請求格式
434使用XML 高級編程
下載
該請求指定了結構為X M L并且使用X M L標準1 . 0版。全部的請求應包括在一個< m e t h o d C a l l >
元素中,它必須包含一個子元素< m e t h o d N a m e >,該子元素包含了一個字符串,它描述了一個將
被激活的遠程方法的名字。對于服務器,它正確地標明了一個方法的名字,合法字符為A ~ Z、
0 ~ 9下劃線、逗號、冒號和斜線( X M L經常對第一個字符加以限制)。
如果這個方法含有參數, < m e t h o d C a l l >元素必須包含一個< p a r a m s >元素,該元素依次可以
包含一個或者多個< p a r a m >元素,每一個均有一個< v a l u e >主題,它們的順序被該方法接口所定
義,下面是一個請求的模板:
程序清單11 -9
3. 參數指定
被指定作為參數的值被分為標量、數組和結構,而標量形式有:
• 整型。
• 邏輯型。
• 字符串型。
• 雙精度型。
• 日期/時間型。
• Base 64。
我們將依次介紹各種形式。
(1) 整型
在X M L - R P C中的整型是一個四字節有符號整數,由< i 4 >或< i n t >元素來指明, 0只有一位,
并且不允許有空白,例如:
程序清單11 - 1 0
你可能發現一個奇怪的現象:數據形式沒有表示成一種屬性,可能在普通的X M L - R P C規
第11章服服務器到服務器使用435 下載
范里缺乏屬性。這只是因為標準的作者并沒有使用。
屬性真的是比元素更有用處嗎?在X M L - R P C領域里有許多相關的討論,但是到目前為止
并沒有動議使用它們。
(2) 布爾型(邏輯型)
布爾型在< b o o l e a n >元素里被指明,“錯誤”用“0”表示,“正確”用“1”表示,例如:
程序清單11 - 11
(3) 字符串型
字符串被封閉在一個< s t r i n g >元素里,必須由合法的A S C I I值組成,但是由于X M L - R P C必須
是合法的X M L特殊字符,所以例如“ <”和“&”必須被編碼成“& l t”和“& a m p”。目前在
X M L - R P C里編碼沒有被指定,因此解析器將使用默認的編碼。在X M L - R P C中,編碼類形并不
需要被指定,盡管這是一個在X M L - R P C中被多次討論的問題。因此, X M L默認的U T F - 8編碼將
被使用,它對于絕大多數的消息都是有效的,下面是一個典型的例子:
程序清單11 - 1 2
(4) 雙精度型
雙精度型在X M L中定義為雙精度帶符號浮點數,在< d o u b l e >元素里被指明。雙精度型不能
包含空格,它包含一個正號或負號,一連串的數字符號,一個小數點和任意位小數(范圍取決
于使用情況,并沒有被指定),該數據類型的使用情況如下面這個例子:
程序清單11 - 1 3
436使用XML 高級編程
下載
(5) 日期/時間型
日期和時間在< d a t e Ti m e . i s o 8 6 0 1 >中被指明,是i s o 8 6 0 1標準的一個子集,該類型對于任何
I n t e r n e t商務系統都是非常重要的,它的格式是: Y Y Y Y M M D D T H H 2 4 : M M : S S,通過X M L - R P C
傳送特定的日期和時間消息是非常容易的。有關時區的消息將被服務器或文檔所指定,在該元
素里并無描述。下面是一個例子:
程序清單11 - 1 4
(6) 64進制
我們能通過X M L - R P C使用Base 64標準來傳送二進制編碼消息,例如G I F和J P E G,它必須被
指定為二進制文件(如下面這個例子)。< b a s e 6 4 >元素用于指定編碼數據,該例沒有使用真正的
編碼圖像。
程序清單11 - 1 5
(7) 數組
在X M L - R P C中,一個< a r r a y >包含唯一的< d a t a >元素,而該元素又包含一些內含參數的
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(139)