soap简介

Posted on 2007-08-17 16:17 李晓东 阅读(158) 评论(0)  编辑  收藏 所属分类: SOA

Web 服务消息的基本单元是实际的 SOAP 信封。这是包含处理消息所必需的所有信息的 XML 文档。

 示例 SOAP 信封
  <?xml version='1.0' ?>
            <env:Envelope xmlns:env="http://www.w3.org/2003/05/SOAP-envelope">
            <env:Header>
            </env:Header>
            <env:Body>
            </env:Body>
            </env:Envelope>
            

在本例中,获得了一个简单的 Envelope,其命名空间指定为 SOAP 1.2 版本。其中包含两个子元素 HeaderBody。让我们了解一下这两个子元素所起的作用。

SOAP 消息中的 Header 用于提供有关消息本身的信息,与用于应用程序的信息相对。例如,Header 可以包括路由信息。


 Header 中的路由信息
            <?xml version='1.0' ?>
            <env:Envelope xmlns:env="http://www.w3.org/2003/05/SOAP-envelope">
            <env:Header>
            <wsa:ReplyTo xmlns:wsa=
            "http://schemas.xmlSOAP.org/ws/2004/08/addressing">
            <wsa:Address>
            http://schemas.xmlSOAP.org/ws/2004/08/addressing/role/anonymous
            </wsa:Address>
            </wsa:ReplyTo>
            <wsa:From>
            <wsa:Address>
            http://localhost:8080/axis2/services/MyService</wsa:Address>
              </wsa:From>
            <wsa:MessageID>ECE5B3F187F29D28BC11433905662036</wsa:MessageID>
            </env:Header>
            <env:Body>
            </env:Body>
            </env:Envelope>
            

本例中有一个 WS-Addressing 元素,其中包含有关消息将送达何处以及应将应答送达何处的信息。Header 可包含关于消息本身的所有类型的消息。事实上,SOAP 规范中使用了大量篇幅说明哪些元素可以放入 Header以及应由“SOAP 中间层”如何对其进行处理。也就是说,SOAP 规范并不假定消息将直接从一个点传递到另一个点(从客户机到服务器)。规范考虑了 SOAP 消息在送达最终目的地的过程中可能实际由多个中间层处理的情况,很清楚地说明了中间层应如何对待在 Header 中找到的信息。不过,对此的讨论不在本教程的范围之内。因此,目前只要知道 Header 可以提供许许多多的功能(如果您需要)即可。

发送 SOAP 消息时,都是有目的性的。您在尝试告诉接收者执行某种操作,或尝试向服务器传递相关信息。此信息称为“有效负载”。有效负载位于 EnvelopeBody 中。它还具有自己的命名空间,在本例中其命名空间与内容管理系统对应。在此情况下,可以完全随意地选择命名空间。只需要与 SOAP 命名空间相异即可。


有效负载示例
            <?xml version='1.0' ?>
            <env:Envelope xmlns:env="http://www.w3.org/2003/05/SOAP-envelope">
            <env:Header>
            ...
            </env:Header>
            <env:Body>
            <cms:addArticle xmlns:cms="http://www.daily-moon.com/cms">
            <cms:category>classifieds</category>
            <cms:subcategory>forsale</cms:subcategory>
            <cms:articleHeadline></cms:articleHeadline>
            <cms:articleText>Vintage 1963 T-Bird.  Less than 300 miles.
            Driven by my daughter until I took it away.  Serious inquires only.
            555-3264 after 7 PM.</cms:articleText>
            </cms:addArticle>
            </env:Body>
            </env:Envelope>
            


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 

posts - 0, comments - 0, trackbacks - 0, articles - 2

Copyright © 李晓东