爲什麼會出現SOAP
現在經常需要程序之間的英特網通信。
現在支持最廣的就是HTTP但是HTTP不是爲了程序之間的調用而設計的,所以有安全性的問題,防火牆和代理服務器通常也會組織此類的流量。SOAP就是被創造出來完成這個任務的。
SOAP提供了一種標準的方法,是的運行在不同的操作系統並使用不同技術和編程語言的應用程序可以互相通訊。
一條SOAP消息就是一個普通的XML文檔,包括下列元素:
- 必須的Envelope元素,可把此XML文檔表示爲一條SOAP消息。
- 可選的Header元素,包含頭部信息
- 必須的Body元素,包含所有的調用和響應信息
- 可選的Fault元素,提供有關在處理此消息所發生錯誤的信息。
語法規則
- SOAP消息必須用XML來編碼
- SOAP消息必須使用SOAP Envelope命名空間
- SOAP消息必須使用SOAP Encoding命名空間
- SOAP消息不能包含DTD使用
- SOAP消息不能包含XML處理指令
SOAP Envelope
SOAP的Envelope元素是SOAP消息的根元素。它可以把XML文檔定義爲SOAP消息。
請注意xmlns:soap命名空間的使用。它的值應當始終是:
http://www.w3.org/2001/12/soap-envelope
並且可以封裝爲:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www/w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
```
Message infomation goes here
```
</soap:Envelope>
xmlns:soap
SOAP消息必須擁有與命名空間”http://www.w3.org/2001/12/soap-enveloap“想關聯的Envelope元素。
使用了不同的命名空間,應用程序會發生錯誤,並拋棄此消息。
encodingStyle屬性
SOAP的encodingStyle屬性用於定義在文檔中使用的數據類型。此屬性可出現在SOAP元素中,並會被應用到元素的內容及元素的所有子元素上。SOAP消息沒有默認的編碼方式。
語法
soap:encodingStyle="URI"