亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

SOAP介紹

2019-11-14 14:45:56
字體:
來源:轉載
供稿:網友

簡介

SOAP(Simple Object access PRotoco)簡單對象訪問協議是在分散或分布式的環境中交換信息的簡單的協議,是一個基于 xml 的協議。此協議規范由 IBM、Microsoft、UserLand 和 DevelopMentor 在1998年共同提出,并得到 IBM,蓮花(Lotus),康柏(Compaq)等公司的支持,于2000年提交給萬維網聯盟(World Wide Web Consortium;W3C)。現在,SOAP 協議規范由萬維網聯盟的 XML工作組維護。SOAP 1.2 版在2003年6月24日成為 W3C 的推薦版本。

SOAP 協議包括以下四個部分的內容:

  1. SOAP 封裝(envelop),封裝定義了一個描述消息中的內容是什么,是誰發送的,誰應當接受并處理它以及如何處理它們的框架;
  2. SOAP 編碼規則(encoding rules),它定義了不同應用程序間交換信息時,需要使用到的數據類型;
  3. SOAP RPC 表示(RPC representation),它定義了一個表示遠程過程調用和應答的協定;
  4. SOAP 綁定(binding),它定義 SOAP 使用哪種底層協議交換信息的協定。使用 HTTP/TCP/UDP 協議都可以;

四個部分之間的關系

SOAP 消息基本上是從發送端到接收端的單向傳輸,但它們常常結合起來執行類似于請求 / 應答的模式。所有的 SOAP 消息都使用 XML 編碼。一條 SOAP 消息就是一個包含有一個必需的 SOAP 的封裝包,一個可選的 SOAP 標頭(Header)和一個必需的 SOAP 體塊(Body)的 XML 文檔。

把 SOAP 綁定到 HTTP 提供了同時利用 SOAP 的樣式和分散的靈活性的特點以及 HTTP 的豐富的特征庫的優點。在HTTP上傳送 SOAP 并不是說 SOAP 會覆蓋現有的 HTTP 語義,而是 HTTP 上的 SOAP 語義會自然的映射到 HTTP 語義。在使用 HTTP 作為協議綁定的場合中, RPC 請求映射到 HTTP 請求上,而 RPC 應答映射到 HTTP 應答。然而,在 RPC 上使用 SOAP 并不僅限于 HTTP 協議綁定。SOAP也可以綁定到TCP和UDP協議上。

雖然這四個部分都作為 SOAP 的一部分,作為一個整體定義的,但他們在功能上是相交的、彼此獨立的。特別的,信封(envelop)和編碼規則(encoding rules)是被定義在不同的 XML 命名空間中,這樣使得定義更加簡單。

語法規則

  1. SOAP 消息必須用 XML 來編碼;
  2. SOAP 消息必須使用 SOAP Envelope 命名空間;
  3. SOAP 消息必須使用 SOAP Encoding 命名空間;
  4. SOAP 消息不能包含 DTD 引用;
  5. SOAP 消息不能包含 XML 處理指令;

SOAP 消息格式

SOAP 消息的格式比較簡單,如下圖:

SOAP 消息格式

下面是一條 SOAP 消息的基本格式:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">    <soap:Header>        <!-- 消息頭,可選 -->    </soap:Header>    <soap:Body>        <!-- 消息內容,必需 -->        <soap:Fault>            <!-- 錯誤信息,可選 -->        </soap:Fault>    </soap:Body></soap:Envelope>

一條 SOAP 消息就是一個普通的 XML 文檔,包含如下元素:

  1. 必需的 Envelope 元素,據此可把該 XML 文檔標識為一條 SOAP 消息;
  2. 可選的 Header 元素,包含頭部信息,一般用于身份驗證;
  3. 必需的 Body 元素,包含所有的調用和響應信息;
  4. 可選的 Fault 元素,提供有關在處理此消息時,所發生的錯誤的描述信息;

語法規則詳解

SOAP Envelope

Envelope 是 SOAP 消息結構的主要容器,也是 SOAP 消息的根元素,它必須出現在每個 SOAP 消息中,用于把此 XML 文檔標示為一條 SOAP 消息。

在 SOAP 中,使用命名空間將 SOAP 消息元素與應用程序自定義的元素區分開來,將 SOAP 消息元素的作用域限制在一個特定的區域。

<soap:Envelope    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding"></soap:Envelope>

SOAP 的 encodingStyle 屬性用于定義在文檔中使用的數據類型。此屬性可出現在任何 SOAP 元素中,并會被應用到元素的內容及元素的所有子元素上。

SOAP Header

這個是可選的,如果需要添加 Header 元素,那么它必須是 Envelope 的第一個子元素。Header 還可以包含0個或多個可選的子元素,這些子元素稱為 Header 項,所有的 Header 項一般來說是屬于某個特定與接口相關的命名空間。

<soap:Envelope    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">    <soap:Header>        <AuthenHeader xmlns="http://www.example.com">            <sAuthenticate>string</sAuthenticate>        </AuthenHeader>    </soap:Header>    <soap:Body>    </soap:Body></soap:Envelope>

Header 元素用于與消息一起傳輸一些附加的消息,如身份驗證信息等。

SOAP Body

SOAP 消息的 Body 元素可以包含以下任何元素:

  1. 遠程過程調用(RPC)的方法及其參數;
  2. 目標應用程序(消息接收者即接口調用者)所需要的數據;
  3. 報告故障和狀態消息的 SOAP Fault;

所有 Body 元素的直接子元素都稱為 Body 項,所有 Body 項一般是屬于某個特點的命名空間的。

SOAP 請求消息例子:

<soap:Envelope    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">    <soap:Body>        <getMobileCodeInfo xmlns="http://www.example.com">            <mobileCode>string</mobileCode>            <userID>string</userID>        </getMobileCodeInfo>    </soap:Body></soap:Envelope>

SOAP 響應消息例子:

<soap:Envelope    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">    <soap:Body>        <getMobileCodeInfoResponse xmlns="http://www.example.com">            <getMobileCodeInfoResult>string</getMobileCodeInfoResult>        </getMobileCodeInfoResponse>    </soap:Body></soap:Envelope>

注:以上例子表示通過手機號獲取手機號歸屬地等信息。第一個例子是請求消息,第二個例子是它的響應消息。

SOAP Fault

Fault 元素用于在 SOAP 消息中傳輸錯誤及狀態信息。如果 SOAP 消息中包括 Fault 元素,它必須作為一個 Body 的子元素出現,而且至多出現一次。Fault 元素本身也包含有描述錯誤詳細信息的子元素。它包含以下子元素:faultcodefaultstring,faultactordetail。

子元素描述
faultcode供識別故障的代碼
faultstring可供人閱讀的有關故障的說明
faultactor有關是誰引發故障的信息
detail有關涉及 Body 元素的應用程序專用錯誤信息

其中 faultcode 是每一條錯誤消息都會提供的元素,它的值一般是以下錯誤代碼之一:

錯誤代碼描述
VersionMismatch無效的 SOAP Envelope 命名空間
MustUnderstand無法理解 Header 中擁有屬性 mustUnderstand = 1 的子元素
Client消息結構錯誤,或包含了不正確的信息
Server服務器出現錯誤

注:以上關于 SOAP Fault 的描述不完全適用于 SOAP 1.2 版本。因為 SOAP 1.2 版本在返回錯誤信息時,Fault 的子元素及其內容已經有所不同。具體看下面的例子:

SOAP v1.1 錯誤消息例子:

<soap:Envelope    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"     soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">    <soap:Body>        <soap:Fault>            <faultcode>soap:Client</faultcode>            <faultstring>Input string was not in a correct format.</faultstring>        <detail/>    </soap:Fault></soap:Body></soap:Envelope>

SOAP v1.2 錯誤消息例子:

<soap:Envelope    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"    soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">    <soap:Body>        <soap:Fault>            <soap:Code>                <soap:Value>soap:Sender</soap:Value>            </soap:Code>            <soap:Reason>                <soap:Text xml:lang="en">Input string was not in a correct format.</soap:Text>            </soap:Reason>            <soap:Detail/>        </soap:Fault>    </soap:Body></soap:Envelope>

從以上返回結果來看,其實所返回的錯誤信息內容并沒有太多改變,只是 XML 的元素發生了一些變化,具體還需要讀者自己理解。

總結

本文章節有點亂,還算是把 SOAP 的基本知識點都過了一遍。接下來,我將會結合一些實例,進一步說明 SOAP 的特點以及如何使用 SOAP Web 服務。(本文已存檔 Github)

參考文獻

  1. 淺談 SOAP
  2. SOAP 詳解
  3. 簡單對象訪問協議(百度百科)
  4. 簡單對象訪問協議(維基百科)
  5. XML 命名空間(XML Namespaces)
  6. SOAP 和 WSDL 的一些必要知識
  7. WebService 筆記=>SOAP 消息結構

其他

  1. 查詢手機歸屬地信息服務:http://webXml.com.cn
  2. SOAP 服務調試工具:SoapUI 5.2
  3. XML 在線格式化工具:Web Toolkit Online

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美亚洲另类激情另类| 欧美成人精品在线播放| 久久精品国产91精品亚洲| 2024亚洲男人天堂| 亚洲第一福利网| 91经典在线视频| 岛国av一区二区三区| 91精品在线国产| 国产福利精品av综合导导航| 色黄久久久久久| 亚洲毛片在线免费观看| 亚洲美女av在线| 成人免费视频在线观看超级碰| 久久夜色撩人精品| 成人xvideos免费视频| 国产精品成熟老女人| 欧美午夜宅男影院在线观看| 亚洲高清免费观看高清完整版| 亚洲美女激情视频| 国产精品久久av| 亚洲最大av在线| 久久久人成影片一区二区三区| 欧美性极品xxxx娇小| 91免费电影网站| 欧美激情一级欧美精品| 在线观看欧美www| 日韩av在线播放资源| 日韩福利在线播放| 91亚洲精品久久久久久久久久久久| 日本道色综合久久影院| 日韩高清免费在线| 日韩在线一区二区三区免费视频| 欧美美女15p| 一本色道久久88亚洲综合88| 亚洲精品视频在线观看视频| 日韩av第一页| 国产欧美精品一区二区三区介绍| 午夜精品国产精品大乳美女| 色悠悠国产精品| 国产精品1区2区在线观看| 91探花福利精品国产自产在线| 日韩精品在线播放| 夜夜嗨av色一区二区不卡| 成人性生交大片免费看视频直播| 精品色蜜蜜精品视频在线观看| 91wwwcom在线观看| 日韩av在线一区| 国产精品aaa| 亚洲剧情一区二区| 欧美午夜激情在线| 国产成人精品电影久久久| 国产午夜精品一区二区三区| 亚洲xxxxx电影| 精品久久久中文| 欧美亚洲国产视频| 亚洲天堂第二页| 亚洲影院污污.| 亚洲精品电影网| 日本精品免费一区二区三区| 亚洲男女性事视频| 成人h片在线播放免费网站| 国产91精品黑色丝袜高跟鞋| 日韩av在线资源| 日韩精品福利网站| 欧美日韩精品在线播放| 亚洲国产欧美精品| 久久色精品视频| 久久好看免费视频| 欧美激情在线观看视频| 国产精品视频网址| 欧美最猛性xxxx| 国产精品久久久久久av福利软件| 91久久精品一区| 亚洲成人精品视频| 欧美性猛交xxxx乱大交蜜桃| 日韩在线欧美在线国产在线| 国语自产精品视频在线看一大j8| 久久综合免费视频影院| 欧美疯狂做受xxxx高潮| 最近2019中文字幕在线高清| 亚洲aⅴ日韩av电影在线观看| 欧美色视频日本版| 国产日韩中文字幕在线| 国产日产欧美a一级在线| 久久久久国产精品一区| 国产精品麻豆va在线播放| 成人国产精品色哟哟| 国产精品视频999| 亚洲精品福利资源站| 26uuu另类亚洲欧美日本一| 久久91精品国产| 色偷偷888欧美精品久久久| 日韩中文字幕亚洲| 7777精品久久久久久| 国产国产精品人在线视| 在线激情影院一区| 日本三级久久久| 亚洲天堂男人天堂女人天堂| 亚洲精品午夜精品| 久久久国产精品免费| 在线成人一区二区| 欧美大肥婆大肥bbbbb| 欧美成人一区在线| 精品网站999www| 国产精品免费网站| 欧美视频裸体精品| 日韩精品亚洲视频| 亚洲视频在线视频| 国产在线999| 欧美极品少妇与黑人| 国产日韩欧美在线观看| 日本三级久久久| 欧美日韩国产一区二区| 亚洲最大福利视频| 亚洲第一精品夜夜躁人人爽| 国内成人精品视频| 成人网在线免费看| 毛片精品免费在线观看| www.亚洲一区| 亚洲欧美三级在线| 亚洲电影第1页| 国产亚洲日本欧美韩国| 亚洲免费精彩视频| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲精品动漫久久久久| 中文字幕国产日韩| 黄色成人在线播放| 国产精品丝袜久久久久久不卡| 欧美日韩国产在线| 日韩69视频在线观看| 国产欧美在线视频| 亚洲人成在线观看| 久久免费高清视频| 欧美成在线视频| 国内精品国产三级国产在线专| 国产第一区电影| 亚洲国产精品久久久久秋霞不卡| 亚洲精品美女视频| 国产精品成人品| 26uuu另类亚洲欧美日本老年| 91免费综合在线| 精品一区二区三区电影| 美女少妇精品视频| 日韩亚洲精品视频| 欧美日韩精品在线视频| 国模吧一区二区三区| 国模视频一区二区三区| 91中文在线观看| 亚洲精品日韩在线| 91av国产在线| 国产一区二区三区18| 亚洲影影院av| 粉嫩av一区二区三区免费野| 亚洲欧美在线一区二区| 亚洲大胆人体av| 欧美精品激情视频| 国产精品久久久久久亚洲调教| 国产精品久久久久久一区二区| 久久久久亚洲精品| 亚洲影院高清在线| 欧美xxxx14xxxxx性爽| 97人人模人人爽人人喊中文字| 亚洲性69xxxbbb| 在线观看久久久久久|