SOAP訊息的結構

2022-02-11 01:19:21 字數 1879 閱讀 6871

介紹soap報文的結構,以及獲取的方式。

在前面講述過使用eclipse的工具web services explorer傳送請求。在actions中填寫請求引數,然後點選go傳送請求。其實傳送出去的是對應的soap訊息:

點選source鏈結,可以看到乙個預設的soap訊息框架:

注:為了突出重點,做了適當的調整;大家在實際操作時看到應該不同。

在文字框之外的,是soap框架的元素;在文字框之內的,是我們自定義的元素。我們可以直接編輯自定義的部分,但是要符合wsdl文件中對於元素的定義。

我們可以直接點選go傳送請求,或者點選form,回到一般的引數編輯頁面(會有乙個確認框,直接確認即可):

以服務端的思考中發布的服務為例,wsdl的位址是http://localhost:6666/service/interpret?wsdl,使用瀏覽器訪問,可以看到:

先把關注點放在紅框中,那裡引入了乙個schema,這個schema定義了soap訊息中的,自定義部分的結構。使用瀏覽器開啟那個位址,可以看到:

假設你已經對schema的知識有了一定的了解,如果不是,可以參考:w3school xml schema 參考手冊。

上述的schema定義了兩個結構:

<

tns:interpret

xmlns:tns

="">

<

num/>

tns:interpret

>

<

tns:interpretresponse

xmlns:tns

="">

<

chnum

/>

tns:interpretresponse

>

乙個是請求訊息的body結構,乙個是響應訊息的body結構。那麼如何對號入座呢?不可避免的還是要講一些wsdl的內容,以下內容僅是自己的理解,不敢保證在嚴格的領域被認可。

wsdl包含五個部分,前三個部分依次是types、message、porttype,其各作用如下:

types

定義soap訊息的結構,例如上文中是通過引入了外部的schema來定義

message

對types中的結構進行了封裝,每乙個結構作為message的乙個part

porttype

定義服務操作(operation),以及每乙個操作的輸入、輸出及對應的message。

通過這三個部分,我們就可以完全確定soap報文的結構了,對號入座的關鍵在於解讀porttype。

那麼我們現在看一下上文的wsdl的這三個部分:

請嘗試自己解讀。

既然wsdl的前三個部分已經可以確定報文的結構,那麼後面的兩個部分binding、service應該是側重於協議的描述;也因此,我把前三個部分稱為結構相關,把後兩個部分稱為協議相關,而後者目前還不打算講。

來自為知筆記(wiz)

SOAP訊息建立

看了soap訊息分析之後,大家對soap訊息應該有了乙個初步的認識,那麼怎樣自己編寫乙個soap訊息呢?先來建立乙個簡單的soap訊息 test public void test1 catch soapexception ioexception e 輸出 envelope xmlns soap en...

soap訊息編譯碼

讀取和設定xml配置檔案是最常用的操作,tinyxml是乙個開源的解析xml的c 解析庫,能夠在windows或linux中編譯。這個解析庫的模型通過解析xml檔案,然後在記憶體中生成dom模型,從而讓我們很方便的遍歷這棵xml樹。使用tinyxml只需要將其中的6個檔案拷貝到專案中就可以直接使用了...

使用SOAP的XML訊息傳遞

使用soap的xml訊息傳遞的簡易流程圖 詳細步驟如下 1 服務請求者的應用程式建立一條 soap 訊息,將此資訊和服務提供者的 一起提供給 soap 基礎結構 例如乙個 soap 客戶機執行時 soap 客戶機執行時與乙個底層網路協議 例如 互動,然後在網路上將 soap 訊息傳送出去。2 網路基...