SOAP协议分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

西安邮电大学

Web服务

课内实验报告书

院系名称:计算机学院

实验题目:SOAP协议分析学生姓名:周从军

专业名称:网络工程

班级:网络1101班学号:04112016 时间:2014年12月20日

Web服务实验报告

SOAP协议分析

一、实验目的

1.理解Web服务,了解简单对象访问协议(SOAP Simple Object Access Protocol)的内容进行分析;

2.掌握简单对象访问协议(SOAP)的格式。

二、实验内容

1.了解SOAP协议内容和技术架构

2.分析协议的原理及SOAP消息的格式、编码原则

3.掌握 SOAP消息的组成

三、设计与设计过程

1.SOAP协议的简介

SOAP(Simple Object Access Protocal,简单对象访问协议)技术有助于实现大量异构程序和平台之间的互操作性,从而使存在的应用能够被广泛的用户所访问。SOAP是把成熟的基于HTTP的WEB技术与xml的灵活性和可扩展性组合在了一起。

2.SOAP的应用范围

SOAP 的一个主要目标是使存在的应用能被更广泛的用户所使用。为了实现这个目的,没有任何SOAPAPI或SOAP对象请求代理(SOAPORB),SOAP是假设你将使用尽可能多的存在的技术。几个主要的CORBA厂商已经承诺在他们的ORB 产品中支持SOAP协议。微软也承诺在将来的COM版本中支持 SOAP。DevelopMentor已经开发了参考实现,它使得在任何平台上的任何java或Perl 程序员都可以使用SOAP。而且IBM和Sun也陆续支持了SOAP协议,和MS合作共同开发SOAP规范和应用。目前SOAP已经成为了W3C和IETF的参考标准之一。

3.SOAP与XML的关系

SOAP 的指导理念是“它是第一个没有发明任何新技术的技术”。它采用了已经广泛使用的两个协议:HTTP和XML。HTTP用于实现SOAP的RPC风格的传输,而XML是它的编码模式。采用几行代码和一个XML解析器,HTTP服务器(如MS

的IIS或Apache)马上成为了SOAP的ORBs。因为目前超过一半的Web服务器采用IIS或Apache,SOAP将会从这两个产品的广泛而可靠的使用中获取利益。这并不意味着所有的SOAP请求必须通过 Web服务器来路由,传统的Web服务器只是分派SOAP请求的一种方式。因此Web服务如IIS或Apache对建立SOAP性能的应用是充分的,但决不是必要的。

4.SOAP的结构

SOAP消息是一个XML文档,它最多包含三个组成部分:

Envelope:(必选)Envelope元素必须作为文档的第一个元素(根元素)出现在文档中,Envelope元素可以包含名称空间声明和附加属性。如果包含附加属性,这些属性必须限定名称空间。Envelope元素也可以包含附加子元素,子元素也必须限定名称空间且跟在SOAP Body元素之后。

Header:(可选)Header元素是可选的,如出现则必须作为Envelope元素的第一个直接子元素出现,Header元素也可以包含一些子元素(header entries),这些子元素也必须限定名称空间。

Body:(可选)Body元素是必选的,如有Header元素则Body直接跟在Header元素之后,否则Body元素将作为Envelope的第一个直接子元素出现。Body元素也一个包含一些子元素(body entries)。SOAP定义了Fault元素,用于指明错误信息。

SOAP消息的例子:

xmlns:SOAP-ENV=”/soap/envelope/”

SOAP-ENV:

encodingStyle=”/soap/encoding/”>

...//Optional

...//Mandatory

SOAP封装(Envelope)

SOAP封装是一个SOAP消息顶层的元素,可以把它看成一个通过邮政服务寄信时的信封。它包括可选择的SOAP标题和一个强制性的SOAP主体。在SOAP消息中的SOAP封装用Envlop元素表示。所有的元素都用SOAP-ENV命名空间标识符作为前缀,该标识符与/soap/envelope相关联的。所有的SOAP元素都与SOAP-ENV前缀相关联,以保证SOAP元素不会与定义的其他元素相互冲突。

SOAP的全局EncodingStyle属性被用于指明在SOAP消息中的编码方式。SOAP规范鼓励的值是/soap/encoding.它是与SOAP定义的编码规则相关的命名空间。

SOAP标题(Header)

SOAP提供了一种灵活的机制,可以以分散但标准的方式扩展消息,而不是需要通讯的双方事前协商达到一致,这就是利用SOAP Header在SOAP消息中增加特性。如:Actor属性用于指明该消息应由谁进行处理;mustUnderstand属性

则指明该处理是否是必须的。一个header entry必须有名称空间限制:包括名称空间的URI和局部名称,并可以包含encodingStyle、Aetor、mustUnderstand 等属性。

SOAP主体(Body)

SOAP主体中包含有消息的接收者必须受到的有效载荷(消息)。消息的SOAP 主体用元素来定义。实际上,典型的载荷是由一个RPC调用、一个RPC

响应或者错误报告组成。Body的所有直接子元素称为Body entry,每一个Body entry都是包含在Body元素中独立元素。Body entry项可以包含一个可选的encodingBthle属性,用于定义该主体项的编码规则。如果定义了,那它将覆盖在SOAP元素中定义的编码规则。

SOAP Header和SOAP Body 的语义关系

Header和Body在定义上是独立的,但在事实上是相关系的。一个Body条目和一个Header条目的关系是:一个Body条目在语义上与这样一个Header条目等价;一个Body entry与一个Actor味缺省值(即不出现Actor属性)、mustUnderstand=”!”的Header entry在语义上是相等的。

SOAP错误(Fault)

SOAP Fault元素是用于在SOAP消息中传输错误及状态信息。如果SOAP消息需要包含SOAP Fatult 元素的话,它必须作为一个Body条目出现,而且在Body 元素内只能出现一次。

SOAP Fault元素定义了一下四个子元素:

Fault code:SOAP定义了一个很小的SOAP错误代码集合,以用于覆盖基本的SOAP错误。

Fault string :falut string元素为那些错误代码提供了可以读懂的错误解释。

Fault actor:fault actor元素描述在消息路径中是谁引起了该错误发生的信息。

Detail:detail元素是用于传输与Body元素相关应用程序提别的错误信息。

5 .SOAP的编码规则

当以电子方式交换数据时,进行交换的断电需要预先在两方面达成一致;校核模式和类型系统。前者与通信通道的体系结合(例如:点对点和多对弈,或分块或异步)有关。而另一方面,后者是要在对消息进行变和解码的过程中使用一致的数据格式。SOAP定义了一个简单的有限协议来传输应用程序级的数据。因为有丰富而又可扩展的类型体系,这个协议可以很容易地将任意应用程序的数据类型作为序列化的XML进行传送。这里我们一Apache SOAP类型映射为例,说明怎样将任意的JAVA类型作为序列化的XML进行传送。

首先让我们来定义一些术语。序列化(Serialization)是将java对象转换为XML实例的过程,而反序列化(Deserialization)是从XML重新构造java

对象的过程。

用于SOAP编码的模式可以在/soap/endoding 上找到。要想自定义用于数据的具体编码规则,大家可以引用一个外部模式,也可以使用xsi:type机制。

使用xsi:type机制的邮电是,SOAP文档在提结构和数据类型的值方面都是自描述的。缺点是没有描述SOAP消息的格式。

相关文档
最新文档