03-Web服務(wù)實(shí)用技術(shù)(SOAP)_第1頁
03-Web服務(wù)實(shí)用技術(shù)(SOAP)_第2頁
03-Web服務(wù)實(shí)用技術(shù)(SOAP)_第3頁
03-Web服務(wù)實(shí)用技術(shù)(SOAP)_第4頁
03-Web服務(wù)實(shí)用技術(shù)(SOAP)_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Web效力適用技術(shù)主講:李偉剛liweigang西北工業(yè)大學(xué)軟件與微電子學(xué)院.第三章 SOAP.主要內(nèi)容SOAP概述SOAP音訊構(gòu)造SOAP編碼SOAP音訊交換SOAP處置技術(shù).第一節(jié) SOAP概述.SOAP是一個(gè)獨(dú)立于任何特定傳輸協(xié)議的XML音訊協(xié)議是復(fù)雜的分布式對象通訊技術(shù)的輕量級替代物源自 BizTalk (Microsoft/UserLand/DevelopMentor )W3C的規(guī)范Based on XMLSOAP.SOAP最早由Dave Winner、Don Box和Bod Atkinson提出。在1997年,Microsoft開場思索基于XML的分布式計(jì)算,其目的是使運(yùn)用程序可以

2、運(yùn)用HTTP上層的遠(yuǎn)程過程調(diào)用(RPC)相互通訊。DevelopMentor和Userland參與到了討論。在1998年初,SOAP名字就曾經(jīng)被確定。Userland在1998年發(fā)布了一個(gè)XML-RPC規(guī)范。1999年9月SOAP0.9提交IETF(Internet工程義務(wù)組)。2000年5月8日,SOAP1.1作為Note提交W3C。IBM發(fā)布Java SOAP實(shí)現(xiàn),并捐給開放源代碼組織Apache XML Project。Sun公司將Web效力集成到J2EE中。2000年9月13日,W3C組建了XML協(xié)議任務(wù)組,專門擔(dān)任設(shè)計(jì)XML協(xié)議,以便成為基于XML分布式計(jì)算的中心。這個(gè)任務(wù)組將SOA

3、P1.1作為根底,并于2001年7月9日提交了第一份任務(wù)組草案SOAP1.2。2003年6月24日SOAP1.2成為W3C引薦規(guī)范。2007年4月27日W3C發(fā)布SOAP1.2引薦規(guī)范第二版。 SOAP開展史.SOAP 為在一個(gè)松散的、分布的環(huán)境中運(yùn)用XML對等地交換構(gòu)造化和類型化信息提供了一個(gè)簡單且輕量級的機(jī)制。支持運(yùn)用程序與運(yùn)用程序之間的通訊。運(yùn)用于B2B的通訊以及企業(yè)運(yùn)用集成。以獨(dú)立于各種編程言語或平臺的方式來構(gòu)造音訊、處置音訊,從而運(yùn)用不同編程言語編寫的程序之間具有互操作性,并可以在不同的操作系統(tǒng)上運(yùn)轉(zhuǎn)。經(jīng)過對模塊中特定格式編碼的數(shù)據(jù)的重編碼機(jī)制來表示運(yùn)用語義。SOAP-What?.S

4、OAP-What?.SOAP-What?SOAPNetwork ProtocolIntermediator.運(yùn)用RPC進(jìn)展通訊需對效力接口達(dá)成一致需對通訊協(xié)議達(dá)成一致運(yùn)用ORB效力可以運(yùn)用Internet,但是需求更改平安設(shè)置SOAP-What?.運(yùn)用XML音訊,信封可封裝恣意內(nèi)容和附件不需求特殊的網(wǎng)絡(luò)設(shè)置用XML描畫效力即WSDL用XML描畫音訊SOAP-What?.定義通訊單元的構(gòu)成:一個(gè)SOAP封套封裝了一切其他的信息。一個(gè)音訊可以有一個(gè)音訊體,音訊體中可以包含任何XML格式數(shù)據(jù)。錯(cuò)誤處置機(jī)制:標(biāo)識錯(cuò)誤源和導(dǎo)致錯(cuò)誤的緣由,并允許錯(cuò)誤診斷信息在共享者和交互者之間傳送??蓴U(kuò)展機(jī)制:運(yùn)用XML

5、 Schema和名字空間技術(shù),靈敏擴(kuò)展元素。靈敏的數(shù)據(jù)表示機(jī)制:允許交換曾經(jīng)以某種格式序列化的數(shù)據(jù),同時(shí)也提供了以XML格式表示諸如編程言語數(shù)據(jù)類型這樣的籠統(tǒng)數(shù)據(jù)構(gòu)造的規(guī)那么。表示遠(yuǎn)程過程調(diào)用(RPC)和作為呼應(yīng)的SOAP音訊的商定,并且便于映射為過程式編程言語構(gòu)造。支持以文檔為中心的方法。將SOAP音訊綁定到HTTP上,由于HTTP是Internet上最常用的通訊協(xié)議。SOAP的功能.第二節(jié) SOAP音訊構(gòu)造.基于XML的協(xié)議,由四部分組成: 信封Envelope:作為描畫音訊中的內(nèi)容以及如何處置音訊的信息框架 編碼規(guī)那么Encoding Rules:用于表示運(yùn)用程序需求運(yùn)用的數(shù)據(jù)類型的實(shí)例

6、 綁定Binding:定義底層通訊協(xié)議,進(jìn)展音訊交換RPC:遠(yuǎn)程過程調(diào)用和前往的商定 SOAP的內(nèi)容.SOAP音訊處置模型.SOAP音訊構(gòu)造Envelope containsHeaderBodyHeader is optionalOut-of-band information (帶外信息) such asAuthentication informationMessage routesLoggingTransaction flowBody contains XML body of RPC callSOAP EnvelopeSOAP HeaderHeader BlockHeader Block.

7、. . SOAP BodyBody BlockBody Block. . . .SOAP音訊分析注:是省略寫法.SOAP音訊例子SOAP envelopeapp-specific message IBM A SOAP Request Message.SOAP音訊例子A SOAP Request Messageapp-specific message IBM message namespaceSOAP Envelope NamespaceSOAP envelope.SOAP音訊例子A SOAP Respond MessageSOAP envelopeapp-specific messageRes

8、ult returned in Body 134 .SOAP Envelope元素信息項(xiàng)是SOAP音訊的最外層元素,它具有:值為Envelope的本地稱號值為/2003/05/soap-envelope的命名空間稱號在它的attributes中有零個(gè)、一個(gè)或多個(gè)由命名空間限定的屬性信息項(xiàng)在它的children中按順序有一個(gè)或兩個(gè)元素信息項(xiàng),次序如下:一個(gè)可選的頭元素信息項(xiàng): Header一個(gè)必選的體元素信息項(xiàng): BodySOAP信封.encodingStyle屬性: encodingStyle屬性信息項(xiàng)指出了對SOAP音訊部分內(nèi)容進(jìn)展序列化的編碼規(guī)那么 SOAP的全局encodingStyle

9、屬性被用于指明在SOAP音訊中運(yùn)用哪種編碼規(guī)那么。encodingStyle屬性信息項(xiàng)可以在下述地方出現(xiàn),其作用范圍包括該元素的內(nèi)容和一切其子元素中未運(yùn)用該屬性的一切子元素:SOAP頭塊SOAP體元素信息項(xiàng)的子元素信息項(xiàng)假設(shè)該子元素不是SOAP缺點(diǎn)元素信息項(xiàng)SOAP Detail元素信息項(xiàng)的子元素信息項(xiàng)上述三者的恣意子元素encodingStyle屬性信息項(xiàng)不能出如今除上述SOAP信息集之外的其它任何元素中SOAP 主要屬性 .SOAP提供了一個(gè)可伸縮的機(jī)制用于在分散的模塊化的環(huán)境下擴(kuò)展SOAP音訊,而通訊雙方并不需求有預(yù)先的商定知識。典型的擴(kuò)展例子可以是實(shí)現(xiàn)一些諸如認(rèn)證、事務(wù)管理以及支付的H

10、eader條目Header元素該當(dāng)被編碼為SOAP Envelope XML文檔的第不斷接子元素。Header的一切直接子元素都被稱為Header條目SOAP Header .5 .Header條目的編碼規(guī)那么包括:一個(gè)SOAP Header條目由一個(gè)完好修飾的元素名來標(biāo)識,所謂完好修飾的元素名是由一個(gè)命名空間URI和部分名來組成SOAP Header元素的一切直接子元素都必需是完好修飾的encodingStyle屬性可以用于指明Header條目的編碼風(fēng)格role屬性和SOAP mustUnderstand屬性可以用于指明由哪個(gè)SOAP結(jié)點(diǎn)來處置條目以及如何處置條目SOAP Header .描

11、畫平安憑證事務(wù)ID路由調(diào)試信息支付令牌平安SOAP Header .SOAP音訊從生成者到達(dá)最終接受者,將潛在地沿著音訊途徑經(jīng)過一系列的SOAP中間結(jié)點(diǎn)。SOAP中間結(jié)點(diǎn)是一個(gè)可以接受和轉(zhuǎn)發(fā)SOAP音訊的運(yùn)用程序。一切的中間結(jié)點(diǎn)都好像最終接受者一樣由一個(gè)URI來標(biāo)識 role屬性信息項(xiàng)的類型是xs:anyURI。role屬性信息項(xiàng)的值是一個(gè)URI,該URI標(biāo)識了該頭塊期望SOAP結(jié)點(diǎn)擔(dān)任的角色當(dāng)一個(gè)節(jié)點(diǎn)接納到一個(gè)SOAP音訊時(shí),它要分析文件頭,以確定哪些代碼塊是由該節(jié)點(diǎn)支持的角色role屬性 .簡稱全稱描述Next/2003/05/soap-envelope/role/next擔(dān)任該角色的必須

12、是SOAP中介及最終SOAP接收者None/2003/05/soap-envelope/role/none任何SOAP結(jié)點(diǎn)都不能扮演該角色UltimateReceiver/2003/05/soap-envelope/role/ultimateReceiver擔(dān)任該角色的必須是最終接收者除了表中所定義的SOAP角色的名字之外,詳細(xì)的SOAP運(yùn)用可根據(jù)本身需求定義其它角色role屬性 .假設(shè)省略SOAP role屬性,等價(jià)于role屬性的值為/2003/05/soap-envelope/role/ultimateReceiver,闡明接納者是SOAP音訊的最終接納者role屬性 .mustUnde

13、rstand全局屬性用于指明一個(gè)Header條目是強(qiáng)迫的還是可選的要求接納者處置Header條目的接納結(jié)點(diǎn)由SOAP role屬性來定義mustUnderstand屬性的值可為“false或“true。假設(shè)沒有運(yùn)用SOAP mustUnderstand屬性,那么在語義上等價(jià)于mustUderstand屬性出現(xiàn)同時(shí)取值為“false 假設(shè)Header條目帶有值為“true的mustUnderstand屬性,那么該Header條目的接納結(jié)點(diǎn)要么必需遵照語義并正確地處置這些語義,要么必需聲稱處置音訊失敗mustUnderstand屬性是為了思索強(qiáng)壯地晉級而設(shè)置的。一切用值為“true的SOAP mu

14、stUnderstand屬性來標(biāo)志的元素必需被以為是可以影響該元素的上級元素或同級元素的語義mustUnderstand屬性 .SOAP relay屬性信息項(xiàng)用于指出,假設(shè)定位于SOAP接納者的SOAP頭塊沒有被處置,那么能否必需轉(zhuǎn)發(fā)該頭塊relay屬性信息項(xiàng)的類型為xs:boolean省略該屬性,在語義上等價(jià)于包含值為false的relay屬性假設(shè)生成SOAP relay屬性信息項(xiàng),SOAP發(fā)送者應(yīng)該運(yùn)用規(guī)范的方式表示屬性值“true。SOAP接納者必需接納該屬性值任何有效的詞法表示 生成SOAP音訊的SOAP發(fā)送者應(yīng)該只在SOAP頭塊中運(yùn)用relay屬性信息項(xiàng)SOAP relay屬性.SO

15、AP Body元素提供一個(gè)簡單的用于與音訊的最終接納者交換強(qiáng)迫信息的機(jī)制。而Body元素的典型運(yùn)用包含序列的RPC調(diào)用和錯(cuò)誤報(bào)告Body元素在編碼上作為SOAP Envelope元素的一個(gè)直接子元素。假設(shè)包含Header元素,那么Body元素必需直接跟隨Header元素,否那么Body元素必需是Envelope元素的第不斷接子元素一切Body元素的直接子元素被稱為SOAP Body條目,同時(shí)每一個(gè)Body條目都該當(dāng)編碼為SOAP Body元素里的一個(gè)獨(dú)立元素SOAP Body .Body條目的編碼規(guī)那么:一個(gè)Body條目由一個(gè)完好修飾的元素名來標(biāo)識,所謂完好修飾的元素名是由一個(gè)命名空間URI和

16、部分名來組成。SOAP Body元素的直接子元素可以是命名空間修飾的SOAP encodingStyle屬性可以被用來闡明Body條目中運(yùn)用的編碼規(guī)那么SOAP定義了一個(gè)Body條目,用于報(bào)告錯(cuò)誤的Fault條目SOAP Body .SOAP Fault元素是用于在SOAP音訊中傳輸錯(cuò)誤或形狀信息。假設(shè)SOAP音訊需求包含SOAP Fault元素的話,它必需作為一個(gè)Body條目出現(xiàn),同時(shí)在Body元素內(nèi)它必需至多出現(xiàn)一次SOAP Fault元素定義了如下子元素:1faultcode元素為那些要提供一個(gè)算法上的機(jī)制來標(biāo)識錯(cuò)誤的軟件之用。faultcode必需在SOAP Fault元素中出現(xiàn)。SO

17、AP定義了一個(gè)很小的SOAP錯(cuò)誤代碼的集合用于覆蓋根本的SOAP錯(cuò)誤。2faultstring元素是為那些錯(cuò)誤代碼提供一個(gè)人可以讀懂的錯(cuò)誤解釋,它不是為程序處置而設(shè),提供一些解釋該錯(cuò)誤種類的信息。3faultactor元素指明SOAP音訊途徑中是誰引起了該錯(cuò)誤的發(fā)生。faultactor屬性的值是一個(gè)標(biāo)識該源的一個(gè)URI。不作為SOAP音訊最終接納者的運(yùn)用程序必需在SOAP Fault元素中包含faultactor元素。而音訊的最終接納者可以運(yùn)用faultactor元素來明確地指明是它生成了該錯(cuò)誤。4detail元素是用于傳輸與SOAP Body元素相關(guān)的運(yùn)用程序特定的錯(cuò)誤信息。假設(shè)Body元

18、素中的內(nèi)容不能被勝利地處置的時(shí)候,它必需出現(xiàn)。它不能被用于傳輸屬于Header條目的錯(cuò)誤信息。SOAP Fault .假設(shè)SOAP Fault元素中不出現(xiàn)detail元素,那么闡明其中的錯(cuò)誤與Body元素的處置無關(guān)。這可以用于區(qū)分在錯(cuò)誤情況下Body元素能否被SOAP的最終接受者處置過。detail元素的一切直接子元素都被稱為detail條目,同時(shí)每個(gè)detail條目都作為detail元素中的一個(gè)獨(dú)立的元素進(jìn)展編碼。detail條目的編碼規(guī)那么如下:1一個(gè)detail條目由一個(gè)完好修飾的元素名來標(biāo)識。detail元素的直接子元素可以是命名空間修飾的。2SOAP encodingStyle屬性可

19、以被用來闡明detail條目中運(yùn)用的編碼規(guī)那么。SOAP Fault .第三節(jié) SOAP編碼.簡單類型: SOAP采用了在“XML Schema Part 2: Datatypes的“Build-in datatypes節(jié)中定義的一切類型,包括值和詞匯空間(lexical spaces)字符串:“string數(shù)據(jù)類型在“XML Schema Part 2: Datatypes中被定義。枚舉:“XML Schema Part 2: Datatypes規(guī)范定義了一種稱為“玫舉(enumeration)的機(jī)制。字節(jié)數(shù)組:一個(gè)Byte數(shù)組可以編碼為單援用或多援用值。對一個(gè)不透明的Byte數(shù)組的引薦表示

20、是運(yùn)用在XML Schema規(guī)范中定義的“base64編碼方式。多態(tài)存取標(biāo)識:多態(tài)地訪問多個(gè)類型的值,在運(yùn)轉(zhuǎn)時(shí)辰每個(gè)類型都是可運(yùn)用的。一個(gè)多態(tài)存取標(biāo)識實(shí)例必需包含一個(gè)“xsi:type屬性以描畫類型的實(shí)踐值。 SOAP 編碼.復(fù)合類型:SOAP按照在程序文語中經(jīng)??匆姷囊韵聵?gòu)造方式來定義復(fù)合類型:“struct是一個(gè)復(fù)合類型值,其成員的存取標(biāo)識名是相互區(qū)別的獨(dú)一標(biāo)志,應(yīng)彼此各不一樣?!癮rray是一個(gè)復(fù)合類型值,其成員的順序位置是相互區(qū)別的獨(dú)一標(biāo)志。SOAP 編碼.兩種描畫數(shù)據(jù)類型實(shí)例的語法Anonymous accessor:36Anonymous because its name is i

21、ts type rather than a meaningful id for the valueNamed accessor:36SOAP 數(shù)據(jù)類型.int a3 = 1, 2, 3;b = Add(ina); 1 2 3 SOAP 數(shù)據(jù)類型:Arrays.第四節(jié) SOAP音訊交換.By value: Add(in int a, in int b);By reference : Square(in, out int &a);348傳值和傳援用.SOAP-RPC: SOAP的一個(gè)設(shè)計(jì)目的就是要利用XML的可擴(kuò)展性和可伸縮性來包裝和交換RPC調(diào)用。為實(shí)施一個(gè)方法調(diào)用,需求以下信息:目的SOAP結(jié)

22、點(diǎn)的URI方法名可選的方法或過程的特征方法或過程的參數(shù)可選的頭數(shù)據(jù)SOAP依賴協(xié)議綁定來提供傳送URI的機(jī)制SOAP音訊交換方式 .RPC調(diào)用和呼應(yīng)都是在SOAP Body元素中傳送,運(yùn)用如下表示方式:一個(gè)方法調(diào)用被建模成一個(gè)構(gòu)造struct。該方法調(diào)用顯示為一個(gè)簡單構(gòu)造struct,包含每個(gè)in或in/out參數(shù)的存取標(biāo)識。該構(gòu)造的名和類型可運(yùn)用過程或方法的名來標(biāo)識。每個(gè)in或in/out參數(shù)都被表示為一個(gè)存取標(biāo)識,該存取標(biāo)識的名和類型都對應(yīng)于相應(yīng)參數(shù)的名和類型。他們的次序也是按照原來RPC中的次序。一個(gè)方法呼應(yīng)被建模成一個(gè)構(gòu)造struct。RPC和SOAP Body. Computer S

23、OAP 懇求音訊.該方法呼應(yīng)顯示為一個(gè)簡單構(gòu)造struct,包含每個(gè)out或in/out參數(shù)的存取標(biāo)識。而第一個(gè)存取標(biāo)識是前往值,而隨后那么是按照原來次序的前往參數(shù)。每個(gè)out或in/out參數(shù)都被表示為一個(gè)存取標(biāo)識,該存取標(biāo)識的名和類型都對應(yīng)于相應(yīng)參數(shù)的名和類型。前往值的存取標(biāo)識名并沒有多少語義。同樣的,構(gòu)造的名也并沒有多少語義。當(dāng)然,無論如何,在添加了“Response字串的方法名后,要有一個(gè)商定來命名它。方法調(diào)用出錯(cuò)應(yīng)運(yùn)用SOAP Fault元素來編碼。假設(shè)一個(gè)綁定協(xié)議對于錯(cuò)誤表達(dá)還有額外規(guī)那么,那么這些規(guī)那么都該當(dāng)被遵守。方法和呼應(yīng)的構(gòu)造可以運(yùn)用規(guī)那么來編碼,也可以運(yùn)用在encodin

24、gStyle屬性中描畫的其他編碼。運(yùn)用程序可以處置漏寫參數(shù)的懇求不過也可以前往一個(gè)錯(cuò)誤。由于在呼應(yīng)中假設(shè)包含“result那么闡明勝利,假設(shè)包含“fault那么闡明失敗,所以假設(shè)方法呼應(yīng)中同時(shí)包含了“result和“fault那么是錯(cuò)誤的。RPC和SOAP Body. 8000.00 SOAP 呼應(yīng)音訊.RPC (Remote Proceduce Call): SOAP Request Message 的SOAP Body 中, 第一個(gè) sub-element 必需與operation 同名。 RPC和SOAP Body.Document: 用于 messaging oriented docu

25、ment exchange. 對于document-oriented Service 或 messaging-oriented Service, 不強(qiáng)調(diào)“operation ,允許SOAP Body 可以直接帶message part, 不用跟一個(gè) operation element . . 注:以目前來說, 不論是.NET 或 JAVA, 并沒有將這兩種 operation 的實(shí)現(xiàn)方式明顯區(qū)分,不論是 RPC Operation 亦或是 Document Operation, 后端都是以一個(gè) Method 來實(shí)現(xiàn)RPC和SOAP Body.1rpc/encoded 2rpc/literal

26、3document/encoded 4document/literal 音訊方式.public class myServices public void myMethod (int x) return; 效力.SOAP文檔內(nèi)容 5 rpc/encoded款式. 5 rpc/literal款式. 5 document /encoded. 5 document /literal. 5 document / literal-wrap.Its just that there are two ways to structure a SOAP message. In the early versions

27、of SOAP, SOAP was designed to support only RPC style. When using RPC style, the contents of the SOAP Body must conform to a structure that indicates the method name and contains a set of parameters. By the time the SOAP 1.0 spec was published, it was expanded to support both RPCs and unstructured me

28、ssages (document). When using Document style, you can structure the contents of the SOAP Body any way you like.音訊方式.雖然SOAP可以和多種HTTP懇求方法結(jié)合運(yùn)用,但這里的綁定只定義了SOAP是如何在HTTP Post懇求中傳輸?shù)摹? Header中的SOAPAction字段:SOAPAction HTTP懇求頭字段(header field)可以用于指示SOAP HTTP懇求的目的。它的值是一個(gè)標(biāo)識該目的的URI。2SOAP HTTP呼應(yīng):在HTTP之上的SOAP服從用于在HT

29、TP中表示通訊形狀的HTTP形狀代碼的語義。例如,2xx形狀代碼闡明這是客戶端包含SOAP構(gòu)件的懇求被勝利的接納、了解和接受等等。3當(dāng)處置懇求的時(shí)候發(fā)生SOAP錯(cuò)誤的時(shí)候,SOAP HTTP效力器必需發(fā)出一個(gè)HTTP 500 “Internal Server Error呼應(yīng)同時(shí)在包含于該呼應(yīng)的SOAP音訊中應(yīng)包含一個(gè)SOAP Fault元素。4HTTP擴(kuò)展框架:SOAP音訊可以與HTTP Extension Framework一同運(yùn)用來標(biāo)識SOAP HTTP懇求。HTTP傳輸SOAP .SOAP利用HTTP的懇求/呼應(yīng)音訊模型,將SOAP懇求的參數(shù)放在HTTP懇求里,而將SOAP呼應(yīng)的參數(shù)放在HTTP呼應(yīng)里。SOAPAction HTTP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論