SOAP消息的結構


概述


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

正文


1.其實發送的是SOAP消息

在前面講述過使用Eclipse的工具Web Services Explorer發送請求。在Actions中填寫請求參數,然后點擊Go發送請求。其實發送出去的是對應的SOAP消息:
點擊Source鏈接,可以看到一個預設的SOAP消息框架:
注:為了突出重點,做了適當的調整;大家在實際操作時看到應該不同。
在文本框之外的,是SOAP框架的元素;在文本框之內的,是我們自定義的元素。我們可以直接編輯自定義的部分,但是要符合wsdl文檔中對於元素的定義。
假如我們這樣編輯:
我們可以直接點擊Go發送請求,或者點擊Form,回到一般的參數編輯頁面(會有一個確認框,直接確認即可):

2. 如何獲取SOAP消息的結構

服務端的思考中發布的服務為例,wsdl的地址是http://localhost:6666/service/interpret?wsdl,使用瀏覽器訪問,可以看到:
先把關注點放在紅框中,那里引入了一個Schema,這個Schema定義了SOAP消息中的,自定義部分的結構。使用瀏覽器打開那個地址,可以看到:
假設你已經對Schema的知識有了一定的了解,如果不是,可以參考: w3school XML Schema 參考手冊
 
Schema 兩個
<tns:interpret xmlns:tns="http://service.chapter1.jws.sand.ljl.cn/">
  <num/>
</tns:interpret>

<tns:interpretResponse xmlns:tns="http://service.chapter1.jws.sand.ljl.cn/">
  <chnum/>
</tns:interpretResponse>

 

一個是請求消息的Body結構,一個是響應消息的Body結構。那么如何對號入座呢?不可避免的還是要講一些wsdl的內容,以下內容僅是自己的理解,不敢保證在嚴格的領域被認可。
wsdl包含五個部分,前三個部分依次是types、message、portType,其各作用如下:
  1. types
    定義SOAP消息的結構,例如上文中是通過引入了外部的Schema來定義
  2. message
    對types中的結構進行了封裝,每一個結構作為message的一個part
  3. portType
    定義服務操作(operation),以及每一個操作的輸入、輸出及對應的message。
 
通過這三個部分,我們就可以完全確定SOAP報文的結構了,對號入座的關鍵在於解讀portType。
那么我們現在看一下上文的wsdl的這三個部分:
請嘗試自己解讀。
既然wsdl的前三個部分已經可以確定報文的結構,那么后面的兩個部分binding、service應該是側重於協議的描述;也因此,我把前三個部分稱為結構相關,把后兩個部分稱為協議相關,而后者目前還不打算講。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM