成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

SOAP 介紹

kgbook / 2180人閱讀

摘要:此協(xié)議規(guī)范由和在年共同提出,并得到,蓮花,康柏等公司的支持,于年提交給萬(wàn)維網(wǎng)聯(lián)盟?,F(xiàn)在,協(xié)議規(guī)范由萬(wàn)維網(wǎng)聯(lián)盟的工作組維護(hù)。然而,在上使用并不僅限于協(xié)議綁定。元素用于在消息中傳輸錯(cuò)誤及狀態(tài)信息。

簡(jiǎn)介

SOAP(Simple Object Access Protoco)簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議是在分散或分布式的環(huán)境中交換信息的簡(jiǎn)單的協(xié)議,是一個(gè)基于 XML 的協(xié)議。此協(xié)議規(guī)范由 IBM、Microsoft、UserLand 和 DevelopMentor 在1998年共同提出,并得到 IBM,蓮花(Lotus),康柏(Compaq)等公司的支持,于2000年提交給萬(wàn)維網(wǎng)聯(lián)盟(World Wide Web Consortium;W3C)?,F(xiàn)在,SOAP 協(xié)議規(guī)范由萬(wàn)維網(wǎng)聯(lián)盟的 XML工作組維護(hù)。SOAP 1.2 版在2003年6月24日成為 W3C 的推薦版本。

SOAP 協(xié)議包括以下四個(gè)部分的內(nèi)容:

SOAP 封裝(envelop),封裝定義了一個(gè)描述消息中的內(nèi)容是什么,是誰(shuí)發(fā)送的,誰(shuí)應(yīng)當(dāng)接受并處理它以及如何處理它們的框架;

SOAP 編碼規(guī)則(encoding rules),它定義了不同應(yīng)用程序間交換信息時(shí),需要使用到的數(shù)據(jù)類(lèi)型;

SOAP RPC 表示(RPC representation),它定義了一個(gè)表示遠(yuǎn)程過(guò)程調(diào)用和應(yīng)答的協(xié)定;

SOAP 綁定(binding),它定義 SOAP 使用哪種底層協(xié)議交換信息的協(xié)定。使用 HTTP/TCP/UDP 協(xié)議都可以;

四個(gè)部分之間的關(guān)系

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

把 SOAP 綁定到 HTTP 提供了同時(shí)利用 SOAP 的樣式和分散的靈活性的特點(diǎn)以及 HTTP 的豐富的特征庫(kù)的優(yōu)點(diǎn)。在HTTP上傳送 SOAP 并不是說(shuō) SOAP 會(huì)覆蓋現(xiàn)有的 HTTP 語(yǔ)義,而是 HTTP 上的 SOAP 語(yǔ)義會(huì)自然的映射到 HTTP 語(yǔ)義。在使用 HTTP 作為協(xié)議綁定的場(chǎng)合中, RPC 請(qǐng)求映射到 HTTP 請(qǐng)求上,而 RPC 應(yīng)答映射到 HTTP 應(yīng)答。然而,在 RPC 上使用 SOAP 并不僅限于 HTTP 協(xié)議綁定。SOAP也可以綁定到TCP和UDP協(xié)議上。

雖然這四個(gè)部分都作為 SOAP 的一部分,作為一個(gè)整體定義的,但他們?cè)诠δ苌鲜窍嘟坏摹⒈舜霜?dú)立的。特別的,信封(envelop)和編碼規(guī)則(encoding rules)是被定義在不同的 XML 命名空間中,這樣使得定義更加簡(jiǎn)單。

語(yǔ)法規(guī)則

SOAP 消息必須用 XML 來(lái)編碼;

SOAP 消息必須使用 SOAP Envelope 命名空間;

SOAP 消息必須使用 SOAP Encoding 命名空間;

SOAP 消息不能包含 DTD 引用;

SOAP 消息不能包含 XML 處理指令;

SOAP 消息格式

SOAP 消息的格式比較簡(jiǎn)單,如下圖:

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



    
        
    
    
        

        
            
        
    

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

必需的 Envelope 元素,據(jù)此可把該 XML 文檔標(biāo)識(shí)為一條 SOAP 消息;

可選的 Header 元素,包含頭部信息,一般用于身份驗(yàn)證;

必需的 Body 元素,包含所有的調(diào)用和響應(yīng)信息;

可選的 Fault 元素,提供有關(guān)在處理此消息時(shí),所發(fā)生的錯(cuò)誤的描述信息;

語(yǔ)法規(guī)則詳解 SOAP Envelope

Envelope 是 SOAP 消息結(jié)構(gòu)的主要容器,也是 SOAP 消息的根元素,它必須出現(xiàn)在每個(gè) SOAP 消息中,用于把此 XML 文檔標(biāo)示為一條 SOAP 消息。

在 SOAP 中,使用命名空間將 SOAP 消息元素與應(yīng)用程序自定義的元素區(qū)分開(kāi)來(lái),將 SOAP 消息元素的作用域限制在一個(gè)特定的區(qū)域。



SOAP 的 encodingStyle 屬性用于定義在文檔中使用的數(shù)據(jù)類(lèi)型。此屬性可出現(xiàn)在任何 SOAP 元素中,并會(huì)被應(yīng)用到元素的內(nèi)容及元素的所有子元素上。

SOAP Header

這個(gè)是可選的,如果需要添加 Header 元素,那么它必須是 Envelope 的第一個(gè)子元素。Header 還可以包含0個(gè)或多個(gè)可選的子元素,這些子元素稱為 Header 項(xiàng),所有的 Header 項(xiàng)一般來(lái)說(shuō)是屬于某個(gè)特定與接口相關(guān)的命名空間。


    
        
            string
        
    
    
    

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

SOAP Body

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

遠(yuǎn)程過(guò)程調(diào)用(RPC)的方法及其參數(shù);

目標(biāo)應(yīng)用程序(消息接收者即接口調(diào)用者)所需要的數(shù)據(jù);

報(bào)告故障和狀態(tài)消息的 SOAP Fault;

所有 Body 元素的直接子元素都稱為 Body 項(xiàng),所有 Body 項(xiàng)一般是屬于某個(gè)特點(diǎn)的命名空間的。

SOAP 請(qǐng)求消息例子:


    
        
            string
            string
        
    

SOAP 響應(yīng)消息例子:


    
        
            string
        
    

注:以上例子表示通過(guò)手機(jī)號(hào)獲取手機(jī)號(hào)歸屬地等信息。第一個(gè)例子是請(qǐng)求消息,第二個(gè)例子是它的響應(yīng)消息。

SOAP Fault

Fault 元素用于在 SOAP 消息中傳輸錯(cuò)誤及狀態(tài)信息。如果 SOAP 消息中包括 Fault 元素,它必須作為一個(gè) Body 的子元素出現(xiàn),而且至多出現(xiàn)一次。Fault 元素本身也包含有描述錯(cuò)誤詳細(xì)信息的子元素。它包含以下子元素:faultcode,faultstringfaultactor,detail

子元素 描述
faultcode 供識(shí)別故障的代碼
faultstring 可供人閱讀的有關(guān)故障的說(shuō)明
faultactor 有關(guān)是誰(shuí)引發(fā)故障的信息
detail 有關(guān)涉及 Body 元素的應(yīng)用程序?qū)S缅e(cuò)誤信息

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

錯(cuò)誤代碼 描述
VersionMismatch 無(wú)效的 SOAP Envelope 命名空間
MustUnderstand 無(wú)法理解 Header 中擁有屬性 mustUnderstand = 1 的子元素
Client 消息結(jié)構(gòu)錯(cuò)誤,或包含了不正確的信息
Server 服務(wù)器出現(xiàn)錯(cuò)誤

注:以上關(guān)于 SOAP Fault 的描述不完全適用于 SOAP 1.2 版本。因?yàn)?SOAP 1.2 版本在返回錯(cuò)誤信息時(shí),Fault 的子元素及其內(nèi)容已經(jīng)有所不同。具體看下面的例子:

SOAP v1.1 錯(cuò)誤消息例子:


    
        
            soap:Client
            Input string was not in a correct format.
        
    


SOAP v1.2 錯(cuò)誤消息例子:


    
        
            
                soap:Sender
            
            
                Input string was not in a correct format.
            
            
        
    

從以上返回結(jié)果來(lái)看,其實(shí)所返回的錯(cuò)誤信息內(nèi)容并沒(méi)有太多改變,只是 XML 的元素發(fā)生了一些變化,具體還需要讀者自己理解。

總結(jié)

本文章節(jié)有點(diǎn)亂,還算是把 SOAP 的基本知識(shí)點(diǎn)都過(guò)了一遍。接下來(lái),我將會(huì)結(jié)合一些實(shí)例,進(jìn)一步說(shuō)明 SOAP 的特點(diǎn)以及如何使用 SOAP Web 服務(wù)。(本文已存檔 Github)

參考文獻(xiàn)

淺談 SOAP

SOAP 詳解

簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(百度百科)

簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(維基百科)

XML 命名空間(XML Namespaces)

SOAP 和 WSDL 的一些必要知識(shí)

WebService 筆記=>SOAP 消息結(jié)構(gòu)

其他

查詢手機(jī)歸屬地信息服務(wù):http://webXml.com.cn

SOAP 服務(wù)調(diào)試工具:SoapUI 5.2

XML 在線格式化工具:Web Toolkit Online

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/110349.html

相關(guān)文章

  • PHP SOAP 擴(kuò)展的使用

    摘要:類(lèi)也是一個(gè)只包含構(gòu)造器的低級(jí)類(lèi),與和類(lèi)相似。安裝擴(kuò)展對(duì)于平臺(tái),需要在中加入如下代碼上面的工作完成之后,還需要注意的是擴(kuò)展在配置文件中有獨(dú)立的代碼片段這些配置項(xiàng)主要是用來(lái)指定處理文件時(shí)使用緩存的行為。支持與擴(kuò)展類(lèi)似的。 原文地址:PHP SOAP 擴(kuò)展,本文在原文基礎(chǔ)上添加了一些內(nèi)容和章節(jié),也加入了一些注釋,請(qǐng)讀者注意。 前兩篇文章 《SOAP 介紹》 和 《SOAP Web 服務(wù)介紹》...

    Cympros 評(píng)論0 收藏0
  • 學(xué)習(xí) PHP SOAP 擴(kuò)展的一些筆記

    摘要:對(duì)的相關(guān)學(xué)習(xí)就先告此一段落,這是最后一篇文章用來(lái)記錄下學(xué)習(xí)過(guò)程中的一些筆記和心得。對(duì),沒(méi)錯(cuò)在還沒(méi)有提供擴(kuò)展前,的確很多人也是這樣做的??偨Y(jié)上面都是自己在學(xué)習(xí)擴(kuò)展時(shí)的一些零散的筆記,如果有不對(duì)的地方,希望大家指出,謝謝。 對(duì) SOAP 的相關(guān)學(xué)習(xí)就先告此一段落,這是最后一篇文章用來(lái)記錄下學(xué)習(xí)過(guò)程中的一些筆記和心得。 前面三篇文章分別是: 《SOAP 介紹》 《SOAP Web 服務(wù)介紹...

    wthee 評(píng)論0 收藏0
  • spring boot開(kāi)發(fā)soap webservice

    摘要:本文介紹如何在中開(kāi)發(fā)接口,以及接口如何同時(shí)支持和兩種協(xié)議。該功能很簡(jiǎn)單,就是通過(guò)一個(gè)人的姓名查詢這個(gè)人的詳細(xì)信息。就是關(guān)鍵,如本次請(qǐng)求報(bào)文如下就是,對(duì)應(yīng)。測(cè)試使用進(jìn)行測(cè)試,通過(guò)地址導(dǎo)入文件進(jìn)行測(cè)試。測(cè)試這樣就實(shí)現(xiàn)了和同時(shí)提供的目的。 介紹spring boot web模塊提供了RestController實(shí)現(xiàn)restful,第一次看到這個(gè)名字的時(shí)候以為還有SoapController,...

    Ashin 評(píng)論0 收藏0
  • php實(shí)現(xiàn)webservice(實(shí)測(cè)C#及java可調(diào)用)

    摘要:具體如何操作這里跳過(guò),實(shí)現(xiàn)是需要擴(kuò)展的。返回值也很特別,不是直接返回,而是把它放到一個(gè)對(duì)象里再返回。返回值中值對(duì)應(yīng)的是中的名稱。最后按運(yùn)行可以查看到對(duì)應(yīng)的輸出,如下圖所示,說(shuō)明實(shí)現(xiàn)的在中可以正確調(diào)用。 使用PHP搭建起一個(gè)其他語(yǔ)言如C#、JAVA可用的Webservice的方法與網(wǎng)上大多數(shù)所述的用PHP建立的webservice感覺(jué)是有差別的。對(duì)于接口的輸入?yún)?shù)及輸出參數(shù)較為復(fù)雜的情況...

    arashicage 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<