介紹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
>
<乙個是請求訊息的body結構,乙個是響應訊息的body結構。那麼如何對號入座呢?不可避免的還是要講一些wsdl的內容,以下內容僅是自己的理解,不敢保證在嚴格的領域被認可。tns:interpretresponse
xmlns:tns
="">
<
chnum
/>
tns:interpretresponse
>
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 網路基...