成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓
當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江蘇OA系統(tǒng) > 南京OA系統(tǒng) > 南京OA快博
實(shí)現(xiàn)隱式和顯式SOAP消息頭
申請(qǐng)免費(fèi)試用、咨詢(xún)電話(huà):400-8352-114
來(lái)源:泛普軟件 實(shí)現(xiàn)隱式和顯式SOAP消息頭(一)用戶(hù)可以使用通常稱(chēng)為顯式和隱式消息頭在 WSDL 定義中定義 SOAP 消息頭。本文學(xué)習(xí)這兩種樣式之間的區(qū)別以及在使用 JAX-RPC 進(jìn)行開(kāi)發(fā)時(shí)這些區(qū)別是如何影響您的。
SOAP 規(guī)范描述了 SOAP 信封可以包括一個(gè)可選的消息頭部分。該消息頭用來(lái)傳輸并不屬于實(shí)際消息的有效載荷部分的數(shù)據(jù)。WSDL 規(guī)范定義了如何將 SOAP 消息頭數(shù)據(jù)聲明為 Web 服務(wù)定義的一部分。在 WSDL 定義中有兩種定義 SOAP 消息頭的方式:顯式和隱式消息頭 。
SOAP 消息頭的樣式
SOAP 消息頭的典型應(yīng)用是用來(lái)傳送上下文的數(shù)據(jù)。例如,如果消息中包括數(shù)字簽名,那么此簽名將最有可能在 SOAP 消息頭中傳送。另一個(gè)例子是用于 Web服務(wù),這些服務(wù)支持與客戶(hù)端之間進(jìn)行某些形式的會(huì)話(huà)。一旦建立了這樣的會(huì)話(huà),它們就要應(yīng)該將特定的標(biāo)識(shí)符與每個(gè)請(qǐng)求一起發(fā)送。 WS-AtomicTransaction 規(guī)范(參閱 參考文獻(xiàn)) 同時(shí)還描述了一種非常類(lèi)似的機(jī)制, 這種機(jī)制用于在多個(gè)Web 服務(wù)之間運(yùn)行交互的協(xié)調(diào)性序列。

WSDL 規(guī)范提供了兩種不同的識(shí)別 SOAP 消息頭字段用法的方法。在顯式消息頭中,用戶(hù)將消息頭的所有信息添加給服務(wù)的 portType 了。它作為附加的參數(shù)顯示給客戶(hù)端。這種樣式的優(yōu)點(diǎn)在于客戶(hù)端能夠直接將所有的信息傳送給該服務(wù)。其不足之處就是它經(jīng)常將服務(wù)的外部接口和與它的業(yè)務(wù)意圖毫不相干的信息群集在一起。
下面是使用隱式消息頭的好處:消息頭信息并不是 portType 的一部分,因此不會(huì)影響服務(wù)的功能性接口。另一方面,隱式消息頭很難作為標(biāo)題以編程的方式處理。
在更加深入了解有關(guān)編程方面的詳細(xì)信息之前, 我們來(lái)看一看這些不同的樣式是如何定義的。
WSDL 中 SOAP 消息頭的綁定類(lèi)型
描述 SOAP 頭不同演示的最簡(jiǎn)單方式就是從實(shí)例開(kāi)始講述。下面清單 1 中的 WSDL 摘錄是摘自以前的解釋 SOAP 消息頭用法的一篇文章:
清單 1. WSDL 中 SOAP 消息頭的綁定 http://soapheader.ibm.com" ...>
...
type="intf:StockService">
"http://schemas.xmlsoap.org/soap/http"/>
part=
"request_header" use="literal"/>
...
您能夠看到在 WSDL 文件的綁定部分中特別的位置上使用了一個(gè)名為的元素。它包含在 元素中,該元素告訴用戶(hù)在該處存在 SOAP 消息頭片斷,可作為操作的部分請(qǐng)求消息。 元素的內(nèi)容能夠識(shí)別在消息頭中傳送的消息部分。
這樣做顯得非常簡(jiǎn)潔易懂,但這是顯式消息頭還是隱式消息頭?顯然,從上面的摘錄來(lái)看,不能準(zhǔn)確區(qū)分。它其實(shí)可以是兩種方式的任意一種,這是因?yàn)椋合㈩^綁定定義了消息 intf:getLastSellPriceRequest 中名為 request_header 的部分,而它又是 SOAP 信封的消息頭部分。這種消息頭樣式依賴(lài)于此消息部分是否被用于 Web 服務(wù)的 portType 中。讓我們?cè)敿?xì)地研究一下這兩種情況。
顯式消息頭
如果消息頭是服務(wù) 的一部分,那么就可以調(diào)用消息頭定義顯式。換句話(huà)說(shuō),名為 request_header 的消息部分必需在 portType 中使用,如 清單 2 所示。
清單 2. WSDL 中的顯式 SOAP 消息頭
name="parameters"/>
"getLastSellPriceRequest"/>
"getLastSellPriceResponse"/>
請(qǐng)注意名為 getLastSellPriceRequest 的消息包括兩部分。一部分加入到SOAP 請(qǐng)求消息的消息體部分,另一部分加入到消息頭中。清單 3 顯示了 WSDL 文件的相關(guān)部分,WSDL 文件顯示了這兩個(gè)部分:
清單 3. WSDL - SOAP 綁定中的顯式 SOAP 頭
"request_header" use="literal"/>
元素定義了 Web 服務(wù)的外部接口。它定義了哪些數(shù)據(jù)要作為請(qǐng)求消息的一部分發(fā)送。如果這些請(qǐng)求數(shù)據(jù)在該請(qǐng)求消息的 SOAP 消息頭部分中傳送,那么用戶(hù)就可以調(diào)用這個(gè)顯式消息頭。該操作同樣分別適用于部分(或者全部)的響應(yīng)消息被定義為頭元素的情況。

本站推薦
- 1企業(yè)采購(gòu)訂單處理量大,如何實(shí)現(xiàn)采購(gòu)管理系統(tǒng)?能替代人工操作嗎?
 - 2企業(yè)采購(gòu)管理系統(tǒng)實(shí)現(xiàn)與源碼,能幫中小企業(yè)節(jié)省多少成本?
 - 3雙非一本通信工程就業(yè)真實(shí)現(xiàn)狀
 - 4園林管理平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
 - 5專(zhuān)業(yè)打造立體倉(cāng)庫(kù)管理系統(tǒng)工程,實(shí)現(xiàn)倉(cāng)庫(kù)高效有序管理
 - 6材料管理系統(tǒng):精準(zhǔn)實(shí)現(xiàn)材料分類(lèi)與高效統(tǒng)計(jì)
 - 7軟件開(kāi)發(fā)合同管理方案:保障項(xiàng)目順利推進(jìn),實(shí)現(xiàn)高效風(fēng)險(xiǎn)管控與成本優(yōu)化
 - 8購(gòu)銷(xiāo)合同管理軟件打印,高效實(shí)現(xiàn)合同文件精準(zhǔn)快速輸出功能
 - 9財(cái)務(wù)軟件內(nèi)合同管理:實(shí)現(xiàn)合同全生命周期高效管控與風(fēng)險(xiǎn)預(yù)警
 

