SOAP簡介
簡單對象訪問協議(SOAP,全寫為Simple Object Access Protocol)是交換數據的一種協議規范,使用在計算機網絡Web服務(web service)中,交換帶結構信息。SOAP為了簡化網頁服務器(Web Server)從XML數據庫中提取數據時,節省去格式化頁面時間,以及不同應用程序之間按照HTTP通信協議,遵從XML格式執行資料互換,使其抽象于語言實現、平臺和硬件。
SOAP 封裝(envelop),它定義了一個框架,描述消息中的內容是什么,是誰發送的,誰應當接受并處理它以及如何處理它們;
SOAP 編碼規則(encoding rules),它定義了一種序列化的機制,用于表示應用程序需要使用的數據類型的實例;
SOAP RPC表示(RPC representation),它定義了一個協定,用于表示遠程過程調用和應答;
SOAP 綁定(binding),它定義了SOAP使用哪種協議交換信息。使用HTTP/TCP/UDP協議都可以。
傳輸方式
SOAP使用因特網應用層協議作為其傳輸協議。SMTP以及HTTP協議都可以用來傳輸SOAP消息,但是由于HTTP在如今的因特網結構中工作得很好,特別是在網絡防火墻下仍然正常工作,所以被廣泛采納。SOAP亦可以在HTTPS上傳輸。
SOAP的消息格式采用XML。
語法規則
SOAP 消息必須用 XML 來編碼
SOAP 消息必須使用 SOAP Envelope 命名空間
SOAP 消息必須使用 SOAP Encoding 命名空間
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 處理指令
SOAP 消息實例
請求
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
<req:category>classifieds</req:category>
</req:echo>
</soapenv:Body>
</soapenv:Envelope>
回應
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<soapenv:Header>
<wsa:ReplyTo>
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
</wsa:ReplyTo>
<wsa:From>
<wsa:Address>http://localhost:8080/axis2/services/MyService</wsa:Address>
</wsa:From>
<wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
</soapenv:Header>
<soapenv:Body>
<req:echo xmlns:req="http://localhost:8080/axis2/services/MyService/">
<req:category>classifieds</req:category>
</req:echo>
</soapenv:Body>
</soapenv:Envelope>
紫金橋與SOAP通訊
本次應用具體情況如下圖所示:

客戶端用戶向紫金橋實時數據庫發送令牌Token請求,紫金橋實時數據庫接收到令牌請求后,通過SOAP協議向令牌驗證服務器請求令牌驗證,令牌驗證服務器根據令牌信息返回此令牌對應用戶名。紫金橋實時數據庫根據用戶名驗證此用戶權限,根據權限不同返回不同的應用畫面。