曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營(yíng)店坑蒙拐騙欺詐消費(fèi)者
一個(gè)包含信息的包,這些包被傳送到一個(gè)過(guò)程或從此返回。頂層是一個(gè)包。
下面這個(gè)例子是不允許的,因?yàn)樗蚱屏诉@些規(guī)則:
程序清單11 - 8 9
數(shù)組a r r a y-1是錯(cuò)誤的,因?yàn)樗鼞?yīng)該在頂層。而數(shù)組a r r a y-2的錯(cuò)誤在于,如果它想在其他
地方被引用,那么應(yīng)該使用A r r a y O f語(yǔ)法。
(6) 數(shù)據(jù)處理擴(kuò)充的小結(jié)
S O A P加入了一些高級(jí)的X M L-R P C數(shù)據(jù)處理能力。一些可能成為X M L應(yīng)程程序的標(biāo)準(zhǔn)的
數(shù)據(jù)類(lèi)型的加入使S O A P有了一個(gè)堅(jiān)實(shí)的基礎(chǔ)。同樣,一些技術(shù),例如稀疏數(shù)組和多引用元素,
對(duì)于減少消息的傳送量很有幫助。最后,像X M L一樣進(jìn)行傳送,而不是編碼成為名字/值對(duì),
使數(shù)據(jù)格式變得更加靈活。
既然我們已經(jīng)使數(shù)據(jù)處理能力大為提高,那么就再關(guān)注一下調(diào)用方法。
2. 調(diào)用
S O A P加入了大量的產(chǎn)生調(diào)用的方法。特別是它允許站點(diǎn)管理者很好地控制服務(wù)器什么消息
能處理和什么不能處理。更多的消息在消息包的頭部提供,同樣增加了使用H T T P動(dòng)詞的靈活
性。
對(duì)于遠(yuǎn)程過(guò)程調(diào)用使于H T T P標(biāo)準(zhǔn)作為傳輸機(jī)制存在的一個(gè)問(wèn)題是,對(duì)以下兩種請(qǐng)求難以區(qū)
分。即一些請(qǐng)求可能是某些高級(jí)通信過(guò)程的一部分,而另一請(qǐng)求可能是低級(jí)的或是惡意的。像
我們使用X M L-R P C時(shí)所看見(jiàn)的, P O S T動(dòng)詞用于傳送這樣一些消息,即該消息將決定哪個(gè)過(guò)程
將被執(zhí)行。但是P O S T也被用于填寫(xiě)一些表格,它甚至被用于文檔的上載。
在某些情況下,對(duì)R P C使用P O S T動(dòng)詞也許并不麻煩。例如;安全可能不成問(wèn)題,或者——
更可能的情形是—可能有這樣一種情況,開(kāi)發(fā)商想在一個(gè)服務(wù)器上實(shí)現(xiàn)R P C功能,但是我們
沒(méi)有向該服務(wù)器加入新動(dòng)詞或報(bào)頭消息的能力。因此,我們總是想首先通過(guò)P O S T來(lái)嘗試和傳送
R P C消息。
第11章服服務(wù)器到服務(wù)器使用473 下載
但是,由于某些原因管理者可能采用防火墻技術(shù)阻止P O S T表單到達(dá)到服務(wù)器。他們盡管想
允許R P C調(diào)用通過(guò),但并不想允許任何其他P O S T通過(guò)。區(qū)別X M L - R P C請(qǐng)求是一個(gè)被提交遠(yuǎn)程
過(guò)程調(diào)用而不是非RPC POST的唯一方法是通過(guò)考查實(shí)際被傳送的數(shù)據(jù)。但是這意味著防火墻要
有更多的工作,因它需要防火墻能識(shí)別有效負(fù)載,并解析X M L。如果對(duì)于S O A P使用防火墻,那
么為什么不能使用B i z Ta l k,We b D AV,或者另外別的什么協(xié)議?一方面新的軟件不停地被加入
防火墻,一方面又設(shè)計(jì)一些新的標(biāo)準(zhǔn),這對(duì)于維護(hù)防火墻是不可能的。在這種狀態(tài)下,我們將
需要一個(gè)動(dòng)詞來(lái)區(qū)分P O S T。
X M L - R P C的強(qiáng)大功能在于它使用H T T P作為它的傳送機(jī)制。這是非常重要的,因?yàn)檫@就意
味著任何防火墻都將允許我們的過(guò)程調(diào)用通過(guò)—并不需要像使用Corba 或者D C O M那樣設(shè)置特
別的端口。但是, X M L - R P C的一個(gè)問(wèn)題是對(duì)自身的描述不夠精確。它通過(guò)“ t e x t/x m l”內(nèi)容形
式來(lái)使用動(dòng)詞P O S T,使對(duì)粒度的控制變得比較困難。
(1) HTTP的擴(kuò)展
向H T T P加入新的動(dòng)詞是不可能也是不希望的,設(shè)想一下如果每一個(gè)人都能簡(jiǎn)單地把它們所
喜歡的動(dòng)詞隨意加入的情況吧!防火墻和服務(wù)器管理者將無(wú)法知道特定請(qǐng)求的目的,無(wú)法提供
可靠的過(guò)濾。如果兩個(gè)不同的服務(wù)器都想發(fā)明一個(gè)如R E N A M E的新動(dòng)詞,我們?nèi)绻麉^(qū)分它們?
即使需要,也不能加入新的動(dòng)詞,應(yīng)該在報(bào)頭提供更多的消息。H T T P擴(kuò)展模式提供一種機(jī)
制用于加入附加報(bào)頭和對(duì)于H T T P請(qǐng)求加入動(dòng)詞信息,希望能在不分析請(qǐng)求本身的情況下,被傳
送的消息自然狀態(tài)能被推斷出來(lái)。
對(duì)于HTTP擴(kuò)展的一個(gè)完整描述參見(jiàn):
http://www.w3.org/Protocols/HTTP/ietf-http-ext/。
在一條消息被處理前,擴(kuò)展模式允許一個(gè)報(bào)頭列表被一個(gè)服務(wù)器或者代理所理解。同樣的
方法,你能夠指定一個(gè)功能調(diào)用所需要的參數(shù)。如果函數(shù)能被運(yùn)行,它可能需要一個(gè)起始參數(shù)
和一個(gè)終結(jié)參數(shù),兩者缺一,即為非法調(diào)用。使用擴(kuò)展模式我們能夠指定一些相似的過(guò)程。如
果服務(wù)器不理解任何強(qiáng)制性參數(shù),那么它必須拒絕全部調(diào)用。
那么對(duì)于指定的消息又如何呢?首先無(wú)論你想使用什么H T T P動(dòng)詞,必須在它前面加前綴M
—如果出現(xiàn)了任何強(qiáng)制性的報(bào)頭。第二個(gè)要求是這些強(qiáng)制性的報(bào)頭使用同X M L命名空間相同
的機(jī)制被編組。下面擴(kuò)展模式的例子有助于問(wèn)題的理解:
程序清單11 - 9 0
在我們關(guān)注擴(kuò)展之前,對(duì)于H T T P標(biāo)準(zhǔn)部分的含義應(yīng)加以更新:
• 第一行的結(jié)尾指明我們遵從HTTP 1.1版本的要求。
474使用XML 高級(jí)編程
下載
• 主機(jī)報(bào)頭說(shuō)明將接收請(qǐng)求的服務(wù)器是w w w. w 3 . o rg。
• 第一行的中間有要求的U R L,格式為/ a - r e s o u r c e。
• 請(qǐng)求的長(zhǎng)度是1 203 字節(jié)(C o n t e n t - l e n g t h),請(qǐng)求的M I M E類(lèi)型是H T M L。
現(xiàn)在讓我們看一下附加的擴(kuò)展模式部分的信息:
• 因?yàn)榈谝恍械膭?dòng)詞有M -前綴,那么這肯定是一個(gè)M a n:報(bào)頭。
• 一旦M -被刪除,那么請(qǐng)求將使用H T T P動(dòng)詞P U T。
• Man:報(bào)頭用一個(gè)U R I來(lái)識(shí)別一個(gè)命名空間和用1 6來(lái)命名它(第二行)。
• 16可以用來(lái)定義所有必需的用于P U T的報(bào)頭。
• 我們有兩個(gè)強(qiáng)制性報(bào)頭—copyright 和c o n t r i b u t i o n s。
你所看到這里允許任何人使用c o p y r i g h t報(bào)頭為他們自己的目的服務(wù),只要一個(gè)唯一的命名
空間前綴用來(lái)避免混淆另外的c o p y r i g h t報(bào)頭和我們?cè)谠摾兴褂玫腸 o p y r i g h t報(bào)頭—它們可
能有許多。
(2) SOAP的強(qiáng)制性報(bào)頭
讓我們看一下S O A P所需要的報(bào)頭。事實(shí)上在最新的規(guī)范里目前僅只有一個(gè),你可能比較喜
歡這種方式。以前的S O A P標(biāo)準(zhǔn)有一個(gè)接口名和一個(gè)方法名。但是,事實(shí)上,方法名前有一個(gè)命
名空間前綴—在這個(gè)例子里為S o m e - N a m e s p a c e - U R I # G e tLa s t Tr a d e P r i c e—這可能會(huì)使S O A P
中國(guó)航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(147)