再现理想 发表于 2015-1-16 22:37:50

ASP.NET编程:SOAP协定标准(二)

java的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。标准以下是形貌下面布局的schema片段:
<elementname="book"type="tns:book"/>
<complexTypename="Book">
<!--Eitherthefollowinggroupmustoccurorelsethe
hrefattributemustappear,butnotboth.-->
<sequenceminOccurs="0"maxOccurs="1">
<elementname="title"type="xsd:string"/>
<elementname="firstauthor"type="tns:Person"/>
<elementname="secondauthor"type="tns:Person"/>
</sequence>
<attributename="href"type="uriReference"/>
<attributename="id"type="ID"/>
<anyAttributenamespace="##other"/>
</complexType>
<elementname="Person"base="tns:Person"/>
<complexTypename="Person">
<!--Eitherthefollowinggroupmustoccurorelsethe
hrefattributemustappear,butnotboth.-->
<sequenceminOccurs="0"maxOccurs="1">
<elementname="name"type="xsd:string"/>
<elementname="address"type="tns:Address"/>
</sequence>
<attributename="href"type="uriReference"/>
<attributename="id"type="ID"/>
<anyAttributenamespace="##other"/>
</complexType>
<elementname="Address"base="tns:Address"/>
<complexTypename="Address">
<!--Eitherthefollowinggroupmustoccurorelsethe
hrefattributemustappear,butnotboth.-->
<sequenceminOccurs="0"maxOccurs="1">
<elementname="street"type="xsd:string"/>
<elementname="city"type="xsd:string"/>
<elementname="state"type="xsd:string"/>
</sequence>
<attributename="href"type="uriReference"/>
<attributename="id"type="ID"/>
<anyAttributenamespace="##other"/>
</complexType>
5.4.2数组
SOAP数组界说为具有"SOAP-ENC:Array"范例或一个从"SOAP-ENC:Array"衍生的范例(拜见划定规矩8)。数组暗示为元素值,对元素的名没有出格的束缚(正如元素值其实不束缚它们所属的元素)。数组能够包括恣意范例的元素,包含嵌套数组。能够创立新的范例(受SOAP-ENC:Array
范例限定)来暗示数组,如整数数组或某些用户界说的列举。数组值暗示为构成这个数组的项的元素的划定规矩序列。在数组值中,元素名关于辨别accesor其实不主要。元素能够有恣意的名。实践上,元平素经常使用它们在schema中表示或断定的数组范例来定名元素。而且一样平常情形下关于复合值来讲,假如数组中数组项的值是single-reference值,则这个数组项包括它的值,不然,该数组项经由过程"href"属性援用这个值。上面的例子是一个整型数组的schema片段:
<elementname="myfavoritenumbers"
type="SOAP-ENC:Array"/>
<myFavoriteNumbers
SOAP-ENC:arrayType="xsd:int">
<number>3</number>
<number>4</number>
</myFavoriteNumbers>
在这个例子中,数组"myfavoritenumbers"包含几个成员,每一个成员是一个范例为soap-enc:int的值。注重soap-enc:array同意不受限定的元素名,它们不转达任何范例信息,以是在利用时,大概它们有xsi:type属性,大概它们所属的元素有soap-enc:arraytype属性。天然,由soap-enc:array衍生的范例能够声明部分元素,但这类情形下要包含范例信息。下面已提到,soap-encschema包括了元素的声明,元素名与"xmlschemapart2:datatypes"标准中的复杂范例分歧。个中包含了对"array"的声明。因而,我们能够如许写:
<soap-enc:arraysoap-enc:arraytype="xsd:int">
<SOAP-ENC:int>3</SOAP-ENC:int>
<SOAP-ENC:int>4</SOAP-ENC:int>
</SOAP-ENC:Array>
数组能够包括特定arraytype的恣意子范例的实例。即,数构成员能够是arrytype属性值指定的范例的恣意子范例,这个范例关于arraytype属性中指定的范例来讲是可交换的(依据schema中的交换划定规矩)。比方,一个整型数组能够包括从整型衍生的恣意范例(如"int"或恣意用户界说的从整型衍生的范例)。一样,一个"address"数组大概包括一个address的受限范例或扩大范例如"internationaladdress"。由于供应的soap-enc:array范例同意恣意范例的成员,以是能够包括恣意范例的夹杂除非利用arraytype属性加以出格的限定。在实例中,可使用xsi:type指定成员元素的范例,或经由过程schema中成员元素的声明来指定。上面是两个例子。
<soap-enc:arraysoap-enc:arraytype="soap-enc:ur-type">
<thingxsi:type="xsd:int">12345</thing>
<thingxsi:type="xsd:decimal">6.789</thing>
<thingxsi:type="xsd:string">
OfMansFirstDisobedience,andtheFruit
OfthatForbiddenTree,whosemortaltast
BroughtDeathintotheWorld,andallourwoe,
</thing>
<thingxsi:type="xsd:uriReference">http://www.dartmouth.edu/~milton/reading_room/</thing>
</SOAP-ENC:Array>
<SOAP-ENC:ArraySOAP-ENC:arrayType="SOAP-ENC:ur-type">
<SOAP-ENC:int>12345</SOAP-ENC:int>
<SOAP-ENC:decimal>6.789</SOAP-ENC:decimal>
<xsd:string>
OfMansFirstDisobedience,andtheFruit
OfthatForbiddenTree,whosemortaltast
BroughtDeathintotheWorld,andallourwoe,
</xsd:string>
<SOAP-ENC:uriReference>http://www.dartmouth.edu/~milton/reading_room/</SOAP-ENC:uriReference>
</SOAP-ENC:Array>
数组值能够是布局或别的复合值。比方"xyz:order"布局数组:
<soap-enc:arraysoap-enc:arraytype="xyz:order">
<Order>
<Product>Apple</Product>
<Price>1.56</Price>
</Order>
<Order>
<Product>Peach</Product>
<Price>1.48</Price>
</Order>
</SOAP-ENC:Array>
数构成员值也能够是数组。下例是两个字符串数组构成的数组:
<soap-enc:arraysoap-enc:arraytype="xsd:string[]">
<itemhref="#array-1"/>
<itemhref="#array-2"/>
</SOAP-ENC:Array>
<SOAP-ENC:Arrayid="array-1"SOAP-ENC:arrayType="xsd:string">
<item>r1c1</item>
<item>r1c2</item>
<item>r1c3</item>
</SOAP-ENC:Array>
<SOAP-ENC:Arrayid="array-2"SOAP-ENC:arrayType="xsd:string">
<item>r2c1</item>
<item>r2c2</item>
</SOAP-ENC:Array>
包括数组的元素无需定名为"soap-enc:array"。它能够有恣意的名,只需元素的范例是soap-enc:array或由之衍生的范例。比方,上面是一个schema片段和与之分歧的数组实例。
<simpletypename="phonenumber"base="string"/>
<elementname="ArrayOfPhoneNumbers">
<complexTypebase="SOAP-ENC:Array">
<elementname="phoneNumber"type="tns:phoneNumber"maxOccurs="unbounded"/>
</complexType>
<anyAttribute/>
</element>
<xyz:ArrayOfPhoneNumbersSOAP-ENC:arrayType="xyz:phoneNumber">
<phoneNumber>206-555-1212</phoneNumber>
<phoneNumber>1-888-123-4567</phoneNumber>
</xyz:ArrayOfPhoneNumbers>
数组多是多维的。在这类情形下,在arraytype属性的asize部分将不止有一个值:
<soap-enc:arraysoap-enc:arraytype="xsd:string">
<item>r1c1</item>
<item>r1c2</item>
<item>r1c3</item>
<item>r2c1</item>
<item>r2c2</item>
<item>r2c3</item>
</SOAP-ENC:Array>
固然下面的例子把数组编码为自力的元素,但元素值也能够是嵌进情势,并且若元素值是singlereference时,必需编码为嵌进情势。下例是一个schema片段,德律风号码数组嵌进到一个范例为"person"的布局中,而且经由过程accessor"phone-numbers"会见它:
<simpletypename="phonenumber"base="string"/>
<elementname="ArrayOfPhoneNumbers">
<complexTypebase="SOAP-ENC:Array">
<elementname="phoneNumber"type="tns:phoneNumber"maxOccurs="unbounded"/>
</complexType>
<anyAttribute/>
</element>
<elementname="Person">
<complexType>
<elementname="name"type="string"/>
<elementname="phoneNumbers"type="tns:ArrayOfPhoneNumbers"/>
</complexType>
</element>
<xyz:Person>
<name>JohnHancock</name>
<phoneNumbersSOAP-ENC:arrayType="xyz:phoneNumber">
<phoneNumber>206-555-1212</phoneNumber>
<phoneNumber>1-888-123-4567</phoneNumber>
</phoneNumbers>
</xyz:Person>
上面的例子中,数组值为single-reference,被编码为嵌进元素,包括它的元素名即为出口名:
<xyz:purcha搜索引擎优化rder>
<CustomerName>HenryFord</CustomerName>
<ShipTo>
<Street>5thAve</Street>
<City>NewYork</City>
<State>NY</State>
<Zip>10010</Zip>
</ShipTo>
<PurchaseLineItemsSOAP-ENC:arrayType="Order">
<Order>
<Product>Apple</Product>
<Price>1.56</Price>
</Order>
<Order>
<Product>Peach</Product>
<Price>1.48</Price>
</Order>
</PurchaseLineItems>
</xyz:PurchaseOrder>
5.4.2.1部分储值(partiallytransmitted)数组
SOAP供应了对部分储值(partiallytransmitted)数组的撑持,如某些高低文中的可变数组。一个partiallytransmitted数组由一个"SOAP-ENC:offset"属性(从第一个transmitted的元素入手下手的偏移量,基于0)唆使。假如省略,偏移量取0。上面的例子中数组的巨细为5,但只要从0起,第三和第四个元素被储值。
<soap-enc:array;soap-enc:arraytype="xsd:string";soap-enc:offset="">
<item>Thethirdelement</item>
<item>Thefourthelement</item>
</SOAP-ENC:Array>
5.4.2.2希罕数组sparsearrays
SOAP供应了对希罕数组的撑持。每一个暗示成员值的元素包括一个"SOAP-ENC:position"属性,用来唆使它在数组中的地位。下例是两维字符串希罕数组的例子,数组巨细是4,但只用到第2个。
<soap-enc:arraysoap-enc:arraytype="xsd:string[,]">
<SOAP-ENC:Arrayhref="#array-1"SOAP-ENC:position=""/>
</SOAP-ENC:Array>
<SOAP-ENC:Arrayid="array-1"SOAP-ENC:arrayType="xsd:string">
<itemSOAP-ENC:position="">Thirdrow,thirdcol</item>
<itemSOAP-ENC:position="">Eighthrow,thirdcol</item>
</SOAP-ENC:Array>
假如对array-1的援用仅产生在数组外部,上例也能够编码以下:
<soap-enc:arraysoap-enc:arraytype="xsd:string[,]">
<SOAP-ENC:ArraySOAP-ENC:position=""SOAP-ENC:arrayType="xsd:string>
<itemSOAP-ENC:position="">Thirdrow,thirdcol</item>
<itemSOAP-ENC:position="">Eighthrow,thirdcol</item>
</SOAP-ENC:Array>
</SOAP-ENC:Array>
5.4.3一样平常复合范例
在这里提到的编码划定规矩不单单限于accessor名已知的情形,假如accessor名是运转情况下及时取得的,编码划定规矩一样合用,也就是说accessor编码成一个元素名与accessor名婚配的元素,同时accessor大概包括大概援用该元素的值。假如accessor包括范例不克不及事前断定的值,它必需包括一个符合的属性xsi:type。相似地,上述援用的划定规矩已充足用于复合范例的序列化,这些复合范例大概包括用名辨别的accessors(布局)和用名及序数地位辨别的accessors。(大概包括反复的accessor)实践上这其实不请求任何schema形式包括这些范例,但更加正确的说法是:一个范例模子(type-model)schema假如有这些范例,就能够机关一个切合XML句律例则的schema和XML文档实例。
<xyz:purcha搜索引擎优化rder>
<CustomerName>HenryFord</CustomerName>
<ShipTo>
<Street>5thAve</Street>
<City>NewYork</City>
<State>NY</State>
<Zip>10010</Zip>
</ShipTo>
<PurchaseLineItems>
<Order>
<Product>Apple</Product>
<Price>1.56</Price>
</Order>
<Order>
<Product>Peach</Product>
<Price>1.48</Price>
</Order>
</PurchaseLineItems>
</xyz:PurchaseOrder>
相似地,将一个布局上相似数组但实践上不是一个soap-enc:array范例大概soap-enc:array子范例的复合值序列化一样是同意的,比方:
<purchaselineitems>
<Order>
<Product>Apple</Product>
<Price>1.56</Price>
</Order>
<Order>
<Product>Peach</Product>
<Price>1.48</Price>
</Order>
</PurchaseLineItems>
5.5缺省值
省略accessor元素意味着大概有一个缺省值大概值不晓得。详细细节依托这个accessor,办法和高低文。比方,关于多态accessor,省略accessor一样平常意味着一个Null值。一样,省略布尔accessor一样平常意味着False值大概值不晓得,省略数字accessor一样平常意味着值为零大概值不晓得。
5.6soaproot属性
SOAProot属性可用于标志一个序列化root,从而一个工具能够反序列化(deserialized),而实践上该root并非真实的工具root。这个属性有两个可选值"1"or"0"。工具真实的roots属性值为“1”,序列化root但不是真实的root属性值也为“1”,元素假如要显式地指定不克不及为序列化root,只需将该属性设置为“0”SOAProot属性能够呈现在SOAP头和SOAP体元素的恣意子元素中。(译者注:SOAProot属性为0的元素不是一个自力的实体,内部的使用不克不及会见到该元素,但该元素能够被SOAP文档自己的别的元素会见到)SOAProot属性能够呈现在SOAP头和SOAP体元素的恣意子元素中。这个属性没出缺省值。
6.在http中利用soap
这一节报告了怎样在HTTP中利用SOAP。把SOAP绑定到HTTP,不管利用或不必HTTP扩大框架,都有很年夜的优点:在使用SOAP的情势化和天真性的同时,利用HTTP各种丰厚的特征。在HTTP中照顾SOAP动静,其实不意味着SOAP改写了HTTP已有的语义,而是将构建在HTTP之上SOAP语义天然地对应到HTTP语义。SOAP天然地遵守HTTP的哀求/应对动静模子使得SOAP的哀求和应对参数能够包括在HTTP哀求和应对中。注重,SOAP的两头节点与HTTP的两头节点其实不同等,即,不要希冀一个依据HTTP毗连头中的域寻址到的HTTP两头节点可以反省或处置HTTP哀求中的SOAP动静。
在HTTP动静中包括SOAP实体时,依照RFC2376HTTP使用程序必需利用媒体范例"text/xml"。
6.1soaphttp哀求
固然SOAP大概与各类HTTP哀求体例相分离,可是绑定仅界说了在HTTPPOST哀求中包括SOAP动静。(第7节中形貌了怎样在RPC中利用SOAP,第6.3节形貌了怎样利用HTTP扩大框架)
6.1.1http头中soapaction域
一个HTTP哀求头中的SOAPAction域用来指出这是一个SOAPHTTP哀求,它的值是所要的URI。在格局、URI的特征和可剖析性上没有任何限定。当HTTP客户收回SOAPHTTP哀求时必需利用在HTTP头中利用这个域。
soapaction="soapaction"":"[<">uri-reference<">]
URI-reference=<asdefinedinRFC2396>
http头中soapaction域使服务器(如防火墙)能准确的过滤http中soap哀求动静。假如这个域的值是空字符串(""),暗示soap动静的方针就是http哀求的uri。这个域没有值暗示没有soap动静的方针的信息。例子:
soapaction:"http://electrocommerce.org/abc#MyMessage"
SOAPAction:"myapp.sdl"
SOAPAction:""
SOAPAction:
6.2soaphttp应对
SOAPHTTP遵守HTTP中暗示通讯形态信息的HTTP形态码的语义。比方,2xx形态码暗示这个包括了SOAP组件的客户哀求已被乐成的收到,了解和承受。在处置哀求时假如产生毛病,SOAPHTTP服务器必需收回应对HTTP500"InternalServerError",并在这个应对中包括一个SOAPFault元素(见4.4节)暗示这个SOAP处置毛病。
6.3http扩大框架
一个SOAP动静能够与HTTP扩大框架一同利用以辨别是不是有SOAPHTTP哀求和它的方针。是利用扩大框架或是一般的HTTP干系到通讯各方的战略和才能。经由过程利用一个必须的扩大声明和"M-"HTTP办法名前缀,客户能够强迫利用HTTP扩大框架。服务器可使用HTTP形态码510"NotExtended"强迫利用HTTP扩大框架。也就是说,利用一个分外的往返,任何一方都能够发明另外一方的战略并按照实行。用来暗示SOAP利用了扩大框架的扩大标记符是http://schemas.xmlsoap.org/soap/envelope/
6.4soaphttp举例
例3利用POST的SOAPHTTP
post/stockquotehttp/1.1
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
SOAPAction:"http://electrocommerce.org/abc#MyMessage"
<SOAP-ENV:Envelope...
HTTP/1.1200OK
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
<SOAP-ENV:Envelope...
例4利用扩大框架的soaphttp
m-post/stockquotehttp/1.1
Man:"http://schemas.xmlsoap.org/soap/envelope/";;ns=NNNN
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
NNNN-SOAPAction:"http://electrocommerce.org/abc#MyMessage"
<SOAP-ENV:Envelope...
HTTP/1.1200OK
ext:
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
<SOAP-ENV:Envelope...
7.在rpc中利用soap
计划SOAP的目标之一就是使用XML的扩大性和天真性来封装和互换RPC挪用。这一节界说了远程历程挪用和应对的一致暗示情势。固然能够估计到这类暗示情势最大概被用于与第5节中界说的编码体例相分离,但也大概有别的的暗示情势。SOAP的encodingstyle属性(见4.3.2节)能够用来标明办法挪用和应对都利用这一节所指定的暗示体例。在RPC中利用SOAP和SOAP协定绑定(见第6节)是严密相干的。在利用HTTP作为绑定协定时,一个RPC挪用天然地映照到一个HTTP哀求,RPC应对一样映照到HTTP应对。可是,在RPC中利用SOAP其实不限于绑定HTTP协定。
要举行办法挪用,以下的信息是必须的:
方针工具的uri
办法名
办法signature(可选)
办法的参数
头数据(可选)
SOAP依托协定绑定供应传送URI的机制。比方,对HTTP来讲,哀求的URI指出了挪用的来历。除必需是一个正当的URI以外,SOAP对一个地点的格局没有任何限定。(更多URI的信息拜见)
7.1rpc和soap体
RPC办法挪用和应对都包括在SOAPBody元素中(见4.3节),它们利用以下的暗示情势:
一个办法挪用用一个布局暗示
一个办法挪用被看做一个单个的布局,每一个和参数有一个accessor。布局的名和范例与办法不异。每一个和参数都被看做一个accessor,这个accessor的名和范例与参数的名和范例绝对应。它们的呈现按次和办法中界说的参数按次不异。
一个办法应对用一个布局暗示。
一个办法应对被看做一个单个的布局,前往值和每一个和参数有一个accessor。第一个accessor是前往值,以后是参数accessor,参数accessor的呈现按次和办法中界说的参数按次不异。每一个参数accessor的称号和范例与参数的称号和范例绝对应。前往值accessor的称号其实不主要。一样,布局的称号也不主要,不外,一般在办法称号的前面加上字符串"Response"作为布局的称号。
办法毛病利用SOAPFault元素(见4.4节)暗示。假如绑定的协定有分外的划定规矩暗示毛病,则这些划定规矩也必需要服从。正如下面所述,办法挪用和应对布局能够依照第5节中划定规矩编码,大概用encodingstyle属性(见4.1.1节)指定编码体例。使用程序能够处置短少参数的哀求,可是大概前往一个毛病。由于前往了局暗示挪用乐成,毛病暗示挪用失利,以是,在办法应对中同时包括前往了局和毛病是毛病的。
7.2rpc和soap头
在RPC编码中,大概会有与办法哀求有关但不是正轨的办法signature的附加信息。假如如许,它必需作为SOAP头元素的子元素。利用这类头元素的一个例子是在动静中传送事件ID。因为事件ID不是办法signature的一部分,一般由底层的组件而不是使用程序代码把持,以是没有一种间接的办法在挪用中传送这个需要的信息。经由过程在头中增加一个给命名字的条目,吸收方的事件办理器就能够析取这个事件ID,并且不影响远程历程挪用的代码。
8.平安性思索
这篇文档中没有触及完全性和保密性,这些成绩将在今后的版本中形貌。
9.参考文献
S.Bradner,"TheInternetStandardsProcess--Revision3",RFC2026,HarvardUniversity,October1996
S.Bradner,"KeywordsforuseinRFCstoIndicateRequirementLevels",RFC2119,HarvardUniversity,March1997
E.Whitehead,M.Murata,"XMLMediaTypes",RFC2376,UCIrvine,FujiXeroxInfo.Systems,July1998
T.Berners-Lee,R.Fielding,L.Masinter,"UniformResourceIdentifiers(URI):GenericSyntax",RFC2396,MIT/LCS,U.C.Irvine,XeroxCorporation,August1998.
R.Fielding,J.Gettys,J.C.Mogul,H.Frystyk,T.Berners-Lee,"HypertextTransferProtocol--HTTP/1.1",RFC2616,U.C.Irvine,DECW3C/MIT,DEC,W3C/MIT,W3C/MIT,January1997
H.Nielsen,P.Leach,S.Lawrence,"AnHTTPExtensionFramework",RFC2774,Microsoft,Microsoft,AgranatSystems
W3CRecommendation"TheXMLSpecification"
W3CRecommendation"NamespacesinXML"
W3CWorkingDraft"XMLLinkingLanguage".Thisisworkinprogress.
W3CWorkingDraft"XMLSchemaPart1:Structures".Thisisworkinprogress.
W3CWorkingDraft"XMLSchemaPart2:Datatypes".Thisisworkinprogress.
TransferSyntaxNDR,in"DCE1.1:RemoteProcedureCall"
N.Freed,N.Borenstein,"MultipurposeInternetMailExtensions(MIME)PartOne:formatofInternetMessageBodies",RFC2045,Innosoft,FirstVirtual,November1996
10。附录
A.SOAP封装举例
a.1哀求编码举例
例5相似于例1,但有一个需要的头
post/stockquotehttp/1.1
Host:www.stockquoteserver.com
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
SOAPAction:"Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
SOAP-ENV:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/";/>
<SOAP-ENV:Header>
<t:Transaction
xmlns:t="some-URI"
SOAP-ENV:mustUnderstand="1">
5
</t:Transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetLastTradePricexmlns:m="Some-URI">
<symbol>DEF</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例6相似于例1,但有多个哀求参数
post/stockquotehttp/1.1
Host:www.stockquoteserver.com
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
SOAPAction:"Some-URI"
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
SOAP-ENV:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/";/>
<SOAP-ENV:Body>
<m:GetLastTradePriceDetailed
xmlns:m="Some-URI">
<Symbol>DEF</Symbol>
<Company>DEFCorp</Company>
<Price>34.1</Price>
</m:GetLastTradePriceDetailed>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
a.2应对编码举例
例7与例2相似,但有需要的头部
http/1.1200ok
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
SOAP-ENV:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/";/>
<SOAP-ENV:Header>
<t:Transactionxmlns:t="some-URI"xsi:type="xsd:int"mustUnderstand="1">5</t:Transaction>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponsexmlns:m="Some-URI">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例8与例2相似,但有一个布局
http/1.1200ok
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";
SOAP-ENV:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/";/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse
xmlns:m="Some-URI">
<PriceAndVolume>
<LastTradePrice>34.5</LastTradePrice>
<DayVolume>10000</DayVolume>
</PriceAndVolume>
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例9与例2相似,但处置需要的头堕落
http/1.1500internalservererror
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:MustUnderstand</faultcode>
<faultstring>SOAPMustUnderstandError</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
例10与例2相似,但处置body堕落
http/1.1500internalservererror
Content-Type:text/xml;charset="utf-8"
Content-Length:nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/";>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>ServerError</faultstring>
<detail>
<e:myfaultdetailsxmlns:e="Some-URI">
<message>
Myapplicationdidntwork
</message>
<errorcode>1001</errorcode>
</e:myfaultdetails>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
因为各系统的API不同,代码调用API编写程序就会遇到很多不兼容的地方,比如Java改写后的Serv-U就不能在手机上执行,手机的游戏也不能直接在微机上执行。

小女巫 发表于 2015-1-19 19:30:53

在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。

小魔女 发表于 2015-1-28 09:56:29

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

不帅 发表于 2015-2-5 16:02:08

可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

柔情似水 发表于 2015-2-12 22:40:19

能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。

灵魂腐蚀 发表于 2015-3-3 10:28:18

众所周知,Windows以易用而出名,也因此占据不少的服务器市场。

分手快乐 发表于 2015-3-11 10:17:02

但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。

冷月葬花魂 发表于 2015-3-18 04:52:51

它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。

再现理想 发表于 2015-3-25 12:17:42

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
页: [1]
查看完整版本: ASP.NET编程:SOAP协定标准(二)