洛阳铲的日志

2010年03月29日

soap学习笔记

Filed under: web — 标签:, — HackGou @ 21:08

参考资料:

  1. http://www.w3school.com.cn/soap/soap_envelope.asp

soap是什么之类的废话就不扯了,直奔主题,按图索骥:

<?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:Body>
<m:GetPrice xmlns:m=”http://www.w3school.com.cn/prices”>
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>

</soap:Envelope>

soap必须:

  1. 使用命名空间: http://www.w3.org/2001/12/soap-envelope。 参见的命名是: soap-envelope或者soap 或者env
  2. 使用soap-envelope:encodingStyle指定文档中使用的数据类型: http://www.w3.org/2001/12/soap-encoding
  3. 必须使用Envelop根元素
  4. 可选的soap:Header元素。
    上面的例子包含了一个带有一个 “Trans” 元素的头部,它的值是 234,此元素的 “mustUnderstand” 属性的值是 “1”。
    SOAP 在默认的命名空间中 (“http://www.w3.org/2001/12/soap-envelope”) 定义了三个属性。这三个属性是:actor、
    mustUnderstand 以及 encodingStyle
    1. actor:

      通过沿着消息路径经过不同的端点,SOAP 消息可从某个发送者传播到某个接收者。
      并非 SOAP 消息的所有部分均打算传送到 SOAP 消息的最终端点,不过,另一个方面,
      也许打算传送给消息路径上的一个或多个端点。SOAP 的 actor 属性可被用于将 Header 元素寻址到一个特定的端点。

    2. mustUnderstand 。

      SOAP 的 mustUnderstand 属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。
      假如您向 Header 元素的某个子元素添加了 “mustUnderstand=”1″,则它可指示处理此头部的接收者必须认可此元素。
      假如此接收者无法认可此元素,则在处理此头部时必须失效。

    3. encodingStyle。的 encodingStyle 属性在上一节中已解释过了
  5. 必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。必须
    使用http://schemas.xmlsoap.org/soap/encoding/这一命名空间作为encodingStyle
    比如下面这个Request:
    <?xml version=”1.0″ encoding=”utf-8″ ?>
    <env:Envelope xmlns:xsd=”http://www.w3.org/2001/XMLSchema
    xmlns:env=”http://schemas.xmlsoap.org/soap/envelope/
    xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“>
    <env:Header>
    <n1:wsse xmlns:n1=”http://schemas.xmlsoap.org/ws/2002/07/secext
    env:mustUnderstand=”1″>
    <n1:sessionid>828000</n1:sessionid>
    </n1:wsse>
    </env:Header>
    <env:Body>
    <n2:withdrawal xmlns:n2=”http://tempuri.org/authHeaderPort
    env:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/“>
    <amt xsi:type=”xsd:int”>120</amt>
    </n2:withdrawal>
    </env:Body>
    </env:Envelope>
    他的response是:
    <?xml version=”1.0″ encoding=”utf-8″ ?>
    <env:Envelope xmlns:xsd=”http://www.w3.org/2001/XMLSchema
    xmlns:env=”http://schemas.xmlsoap.org/soap/envelope/
    xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance“>
    <env:Header>
    <n1:wsse xmlns:n1=”http://schemas.xmlsoap.org/ws/2002/07/secext
    env:mustUnderstand=”0″>
    <n1:sessionid>0</n1:sessionid>
    </n1:wsse>
    </env:Header>
    <env:Body>
    <n2:withdrawalResponse xmlns:n2=”http://tempuri.org/authHeaderPort
    env:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/“>
    <return xsi:type=”xsd:string”>withdrawal 120 OK</return>
    </n2:withdrawalResponse>
    </env:Body>
    </env:Envelope>
  6. 可选的Fault元素用来指示错误的

soap响应看起来是这样的:

<?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>

Del.icio.us : ,

没有评论 »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

Powered by WordPress