免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
SOAP協(xié)議是什么
一、什么是 SOAP?
SOAP 指簡易對象訪問協(xié)議
SOAP 是一種通信協(xié)議
SOAP 用于應(yīng)用程序之間的通信
SOAP 是一種用于發(fā)送消息的格式
SOAP 被設(shè)計用來通過因特網(wǎng)進行通信
SOAP 獨立于平臺
SOAP 獨立于語言
SOAP 基于 XML
SOAP 很簡單并可擴展
SOAP 允許您繞過防火墻
SOAP 將被作為 W3C 標準來發(fā)展
二、為什么使用SOAP協(xié)議?
對于應(yīng)用程序開發(fā)來說,使程序之間進行因特網(wǎng)通信是很重要的。
目前的應(yīng)用程序通過使用遠程過程調(diào)用(RPC)在諸如 DCOM 與 CORBA 等對象之間進行通信,但是 HTTP 不是為此設(shè)計的。RPC 會產(chǎn)生兼容性以及安全問題;防火墻和代理服務(wù)器通常會阻止此類流量。
通過 HTTP 在應(yīng)用程序間通信是更好的方法,因為 HTTP 得到了所有的因特網(wǎng)瀏覽器及服務(wù)器的支持。SOAP 就是被創(chuàng)造出來完成這個任務(wù)的。
SOAP 提供了一種標準的方法,使得運行在不同的操作系統(tǒng)并使用不同的技術(shù)和編程語言的應(yīng)用程序可以互相進行通信。
三、SOAP 構(gòu)建模塊
一條 SOAP 消息就是一個普通的 XML 文檔,包含下列元素:
必需的 Envelope 元素,可把此 XML 文檔標識為一條 SOAP 消息
可選的 Header 元素,包含頭部信息
必需的 Body 元素,包含所有的調(diào)用和響應(yīng)信息
可選的 Fault 元素,提供有關(guān)在處理此消息所發(fā)生錯誤的信息
所有以上的元素均被聲明于針對 SOAP 封裝的默認命名空間中:
http://www.w3.org/2001/12/soap-envelope
以及針對 SOAP 編碼和數(shù)據(jù)類型的默認命名空間:
http://www.w3.org/2001/12/soap-encoding
1,語法規(guī)則
這里是一些重要的語法規(guī)則:
SOAP 消息必須用 XML 來編碼
SOAP 消息必須使用 SOAP Envelope 命名空間
SOAP 消息必須使用 SOAP Encoding 命名空間
SOAP 消息不能包含 DTD 引用
SOAP 消息不能包含 XML 處理指令
(1)必須使用 SOAP Envelope
必需的 SOAP 的 Envelope 元素是 SOAP 消息的根元素。它可把 XML 文檔定義為 SOAP 消息。
請注意 xmlns:soap 命名空間的使用。它的值應(yīng)當始終是:http://www.w3.org/2001/12/soap-envelope
并且它可把封裝定義為 SOAP 封裝:
Xml代碼 
 
<?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 information goes here
...
</soap:Envelope>
(2)必須使用 SOAP Encoding
SOAP 的 encodingStyle 屬性用于定義在文檔中使用的數(shù)據(jù)類型。此屬性可出現(xiàn)在任何 SOAP 元素中,并會被應(yīng)用到元素的內(nèi)容及元素的所有子元素上。SOAP 消息沒有默認的編碼方式。
語法  soap:encodingStyle="URI"
注意:
SOAP 消息必須擁有與命名空間 "http://www.w3.org/2001/12/soap-envelope" 相關(guān)聯(lián)的一個 Envelope 元素。如果使用了不同的命名空間,應(yīng)用程序會發(fā)生錯誤,并拋棄此消息。
2,SOAP Header 元素
可選的 SOAP Header 元素可包含有關(guān) SOAP 消息的應(yīng)用程序?qū)S眯畔ⅲū热缯J證、支付等)。如果 Header 元素被提供,則它必須是 Envelope 元素的第一個子元素。
注釋:所有 Header 元素的直接子元素必須是合格的命名空間。
SOAP 在默認的命名空間中 ("http://www.w3.org/2001/12/soap-envelope") 定義了三個屬性。這三個屬性是:actor、 mustUnderstand 以及 encodingStyle。這些被定義在 SOAP 頭部的屬性可定義容器如何對 SOAP 消息進行處理。
(1)actor 屬性
通過沿著消息路徑經(jīng)過不同的端點,SOAP 消息可從某個發(fā)送者傳播到某個接收者。并非 SOAP 消息的所有部分均打算傳送到 SOAP 消息的最終端點,不過,另一個方面,也許打算傳送給消息路徑上的一個或多個端點。
SOAP 的 actor 屬性可被用于將 Header 元素尋址到一個特定的端點。
語法  soap:actor="URI"
實例
Xml代碼 
 
<?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">
<soap:Header>
<m:Trans
xmlns:m="http://www.w3school.com.cn/transaction/"
soap:actor="http://www.w3school.com.cn/appml/">
234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
(2)mustUnderstand 屬性
SOAP 的 mustUnderstand 屬性可用于標識標題項對于要對其進行處理的接收者來說是強制的還是可選的。
假如您向 Header 元素的某個子元素添加了 "mustUnderstand="1",則它可指示處理此頭部的接收者必須認可此元素。假如此接收者無法認可此元素,則在處理此頭部時必須失效。
語法  soap:mustUnderstand="0|1"
實例
Xml代碼 
 
<?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">
<soap:Header>
<m:Trans
xmlns:m="http://www.w3school.com.cn/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
(3)encodingStyle 屬性
SOAP 的 encodingStyle 屬性在前面已解釋過了。
3,SOAP Body 元素
SOAP Body 元素的直接子元素可以是合格的命名空間。SOAP 在默認的命名空間中("http://www.w3.org/2001/12/soap-envelope")定義了 Body 元素內(nèi)部的一個元素。即 SOAP 的 Fault 元素,用于指示錯誤消息。
Xml代碼 
 
<!--  一個 SOAP 請求應(yīng)該類似這樣  -->
<?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">
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3school.com.cn/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
<!--  而一個 SOAP 響應(yīng)應(yīng)該類似這樣:  -->
<?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">
<soap:Body>
<m:GetPriceResponse xmlns:m="http://www.w3school.com.cn/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
請注意,請求中的 m:GetPrice 和 Item 元素是應(yīng)用程序?qū)S玫脑?。它們并不?SOAP 標準的一部分。
4,SOAP Fault 元素
可選的 SOAP Fault 元素用于指示錯誤消息。
如果已提供了 Fault 元素,則它必須是 Body 元素的子元素。在一條 SOAP 消息中,F(xiàn)ault 元素只能出現(xiàn)一次。
SOAP 的 Fault 元素擁有下列子元素:
<faultcode> 供識別故障的代碼
<faultstring> 可供人閱讀的有關(guān)故障的說明
<faultactor> 有關(guān)是誰引發(fā)故障的信息
<detail> 存留涉及 Body 元素的應(yīng)用程序?qū)S缅e誤信息
SOAP Fault 代碼
在下面定義的 faultcode 值必須用于描述錯誤時的 faultcode 元素中:
VersionMismatch         SOAP Envelope 元素的無效命名空間被發(fā)現(xiàn)
MustUnderstand         Header 元素的一個直接子元素(帶有設(shè)置為 "1" 的 mustUnderstand 屬性)無法被理解。
Client         消息被不正確地構(gòu)成,或包含了不正確的信息。
Server         服務(wù)器有問題,因此無法處理進行下去。
四、SOAP HTTP Binding
1,普通的HTTP協(xié)議
HTTP 在 TCP/IP 之上進行通信。HTTP 客戶機使用 TCP 連接到 HTTP 服務(wù)器。在建立連接之后,客戶機可向服務(wù)器發(fā)送 HTTP 請求消息:
POST /item HTTP/1.1
Host: 189.123.345.239
Content-Type: text/plain
Content-Length: 200
隨后服務(wù)器會處理此請求,然后向客戶機發(fā)送一個 HTTP 響應(yīng)。此響應(yīng)包含了可指示請求狀態(tài)的狀態(tài)代碼:
200 OK
Content-Type: text/plain
Content-Length: 200
在上面的例子中,服務(wù)器返回了一個 200 的狀態(tài)代碼。這是 HTTP 的標準成功代碼。
假如服務(wù)器無法對請求進行解碼,它可能會返回類似這樣的信息:
400 Bad Request
Content-Length: 0
2,SOAP HTTP Binding
SOAP 方法指的是遵守 SOAP 編碼規(guī)則的 HTTP 請求/響應(yīng)。
HTTP + XML = SOAP
SOAP 請求可能是 HTTP POST 或 HTTP GET 請求。
HTTP POST 請求規(guī)定至少兩個 HTTP 頭:Content-Type 和 Content-Length。
(1)Content-Type
SOAP 的請求和響應(yīng)的 Content-Type 頭可定義消息的 MIME 類型,以及用于請求或響應(yīng)的 XML 主體的字符編碼(可選)。
語法  Content-Type: MIMEType; charset=character-encoding
例子
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
(2)Content-Length
SOAP 的請求和響應(yīng)的 Content-Length 頭規(guī)定請求或響應(yīng)主體的字節(jié)數(shù)。
語法  Content-Length: bytes
例子
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250
五、一個 SOAP 實例
在下面的例子中,一個 GetStockPrice 請求被發(fā)送到了服務(wù)器。此請求有一個 StockName 參數(shù),而在響應(yīng)中則會返回一個 Price 參數(shù)。此功能的命名空間被定義在此地址中: "http://www.example.org/stock"
SOAP 請求:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
Xml代碼 
 
<?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">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
SOAP 響應(yīng):
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
Xml代碼 
 
<?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">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
SOAP Envelope 元素
DLNA
SOAP
WebService工作原理
理解 SOAP
中華網(wǎng)校-WSDL文件詳解(上)
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服