SOAP协议分析
- 格式:doc
- 大小:633.50 KB
- 文档页数:9
什么是SOAP?SOAP(Simple Object Access Protocol)是一种用于基于网络的通信的协议和消息格式。
它主要用于在分布式系统中进行应用程序之间的数据交换。
SOAP使用XML(Extensible Markup Language)作为消息格式,并基于HTTP、SMTP等协议进行传输。
SOAP被广泛应用于Web 服务的设计和开发,提供了一种跨平台和跨语言的通信方式。
以下是SOAP的一些关键概念和特点:1. 消息格式:SOAP使用XML作为消息格式,这使得消息具有良好的可读性和可扩展性。
XML 可以表示复杂的数据结构,并且可以与各种编程语言和平台进行互操作。
2. 通信协议:SOAP可以使用多种协议进行消息传输,如HTTP、SMTP、JMS等。
最常用的是通过HTTP协议进行传输,因为HTTP协议在互联网上得到广泛支持。
3. 消息结构:SOAP消息由一个或多个SOAP Envelope组成,每个Envelope包含Header和Body两个部分。
Header用于传递一些元数据和可选参数,而Body用于传输实际的数据。
4. 远程过程调用(RPC):SOAP支持远程过程调用,允许客户端调用远程服务器上的方法。
客户端可以通过SOAP消息将请求发送到服务器,并接收服务器返回的响应。
5. 扩展和命名空间:SOAP消息可以使用扩展元素和属性来添加自定义的功能和数据。
此外,SOAP使用命名空间来避免元素和属性之间的冲突,并允许不同的应用程序和服务进行互操作。
6. 安全性:SOAP提供了一些机制来确保消息的安全性,如使用SSL/TLS进行加密和身份验证,使用数字签名保证消息的完整性等。
这使得SOAP在需要安全性的应用场景中得到广泛应用。
以下是一些使用SOAP的优点和特点:1. 跨平台和跨语言:由于SOAP使用XML作为消息格式,并且可以通过HTTP等协议进行传输,它可以在不同的操作系统和编程语言之间进行通信。
在 中,XML Web Service支持三种协议来与用户交流数据。
这三种协议分别是:1.SOAP:Simple Object Access Protocol2.HTTP-GET3.HTTP-POST1.首先我们先来理解一下这三者的大概定义。
在这三种协议中,SOAP是XML Web Service最常用到的连接协议。
与HTTP相比,SOAP显的更为复杂,但却拥有更强的接受能力。
SOAP是一种以XML为基础的协议,它提供一种将数据打包(Packaging)和编码(Encoding)的方法,以用于网络的数据传输。
任意一个用户都可以使用SOAP协议与任何一个XML Web Service进行通信,甚至于说这个XML Web Service不是建立在.NET 平台上的,比如说Java的,我们都可以利用SOAP来进行数据传输。
因此可见,SOAP也是Language Independent.(语言独立性)HTTP(Hypertext Transfer Protocol) 已经是众所周知的协议了,它是XML Web Service数据传输的标准,这包括了在使用SOAP传输数据的时候。
HTTP将SOAP 消息压缩,然后以它的形式进行网络传输。
然而当我们谈及在XML Web Service 下使用HTTP-GET和HTTP-POST的时候,我们实事上在谈有关单独使用HTTP调用XML Web Service中的方法的能力,这里我说的单独使用,指的是不使用SOAP。
在HTTP中,GET 和POST并不是一种协议,它们是可以用来与Web Service交互的几种方法中的其中二种。
然而,这二种方法的传送参数和数据的能力使它们变成了一种简单的,非常适合用来调用XML Web Service的工具。
2.HTTP-GET 和HTTP-POST 的比较这二者最大的区别在于数据是如何与要求的消息捆绑在一起的。
HTTP-GET的处理特征如下:。
rest与soap接口技术REST(Representational State Transfer)和SOAP(Simple Object Access Protocol)是两种常见的Web服务接口技术,它们在架构、通信协议和数据格式等方面存在一些差异。
1.架构:REST是一种基于HTTP协议的架构风格,它使用HTTP方法(如GET、POST、PUT、DELETE等)来执行CRUD(创建、读取、更新、删除)操作。
而SOAP则是一种基于XML的通信协议,它使用HTTP或SMTP等传输协议来发送SOAP消息。
2.通信协议:REST使用HTTP协议进行通信,它可以通过HTTP代理进行传输,无需建立持久的连接。
而SOAP则使用HTTP或SMTP 等协议进行通信,需要建立持久的连接。
3.数据格式:REST通常使用JSON(JavaScript Object Notation)作为数据交换格式,因为它易于阅读、编写和解析。
而SOAP则使用XML 作为数据交换格式,因为它具有良好的自描述性和可扩展性。
4.客户端和服务端:在REST中,客户端和服务端都是独立的实体,客户端可以与服务端进行通信并请求服务。
而在SOAP中,客户端和服务端之间的通信需要通过SOAP消息进行交互。
5.安全性:REST和SOAP都支持安全性的实现,例如使用SSL/TLS进行数据加密和身份验证。
但是,由于REST通常使用简单的HTTP协议进行通信,因此它可能更容易受到一些常见的安全威胁,例如SQL注入和跨站脚本攻击。
相比之下,SOAP更加复杂,但是它提供了更多的安全选项,例如WS-Security标准。
总结来说,REST和SOAP是两种不同的Web服务接口技术,它们在架构、通信协议和数据格式等方面存在差异。
选择使用哪种技术取决于具体的应用场景和需求。
国外对soap的称呼和分类
SOAP(Simple Object Access Protocol)是一种用于在网络上交换结构化信息的协议。
虽然SOAP 在国外也以其英文缩写为"SOAP" 来称呼,但不同的国家和地区可能在语境和用词上存在一些差异。
在国外,一般来说,SOAP可以被归类为Web Services 协议的一部分。
Web Services 是一组标准化的通信协议和服务规范,用于实现分布式系统中的应用程序之间的互操作性。
SOAP可以被分类为以下几个方面:
1. Messaging Protocol(消息协议):SOAP 用于定义消息的格式,使得在不同的系统之间能够进行交流。
它使用XML 格式来描述消息的结构。
2. Remote Procedure Call (RPC) Protocol(远程过程调用协议):SOAP 提供了一种机制,使得在网络上调用远程服务就像本地调用一样简单。
通过SOAP,可以实现分布式系统中的方法调用。
3. Transport Protocol(传输协议):SOAP 可以在多种传输协议上运行,包括HTTP、SMTP 等。
最常见的是在Web 服务中使用HTTP 协议进行消息传递。
4. Security(安全性):SOAP 规范也包括有关安全性的规定,例如使用WS-Security 标准来加密和签名SOAP 消息,确保在网络上传输的信息的机密性和完整性。
总的来说,SOAP是一种在Web Services 中使用的协议,用于定义消息的格式、实现远程过程调用,并提供了一些安全性方面的规范。
在国外,通常会用"SOAP" 这个术语来指代这种协议。
soap格式的基本内容
SOAP (Simple Object Access Protocol) 格式,通常称为SOAP 消息,是一种以XML 为基础的用于处理跨网络服务调用的简单协议格式。
SOAP 消息的基本结构包括:
•Envelope:它为整个SOAP 消息的根元素,所有的元素和子元素必须包含在Envelope 中。
•Header:它提供了有关消息本身的meta 信息,以及消息的处理方式,如消息是谁发给谁,是否需要经过加密/压缩等等,必须包含在Envelope 的Header 元素中。
•Body:它是SOAP 消息真正有用的部分,里面包含了一个或者多个XML 元素,用来传达有关消息的信息和功能,必须包含在Envelope 的Body 元素中。
•Fault:这个负责处理错误响应的部分,只有在发生错误的情况下才会出现,可以在Envelope 的Body 元素下的Fault 元素中找到。
SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在网络中交换结构化信息。
它通常用于Web服务和分布式系统的通信。
SOAP问题描述是一种特定格式的消息,用于描述一个错误或异常情况。
它包含一个“<fault>”元素,其中包含有关错误的详细信息。
这些信息可能包括错误代码、错误消息、时间戳和任何相关的日志文件或跟踪信息。
在SOAP问题描述中,通常还包括一个“<faultstring>”元素和一个
“<faultactor>”元素。
前者包含关于错误的文本描述,后者包含造成错误的SOAP角色的URI。
此外,SOAP问题描述还可以包含一个“<detail>”元素,其中包含有关错误的附加信息,例如堆栈跟踪或异常信息。
通过使用SOAP问题描述,Web服务客户端可以了解发生了什么错误,并采取适当的措施来解决它。
这有助于提高系统的可靠性和可维护性。
webservice soap 格式Web服务(WebService)是一种允许不同应用程序通过网络进行通信和交互的技术。
其中,SOAP(Simple Object Access Protocol)是一种基于XML格式的通信协议,用于在Web服务之间进行消息传递。
本文将介绍WebService SOAP格式的特点、优势以及在实际应用中的使用。
首先,WebService SOAP格式是一种基于XML的通信协议,它使用XML来封装和传输数据。
这种格式的使用具有以下几个特点。
首先,由于XML是一种通用的数据格式,可以被几乎所有编程语言和平台解析和处理,因此SOAP格式具有很好的兼容性。
其次,SOAP格式支持复杂的数据结构,例如多层嵌套、数组和对象等,使得在Web服务之间传递复杂数据变得简单和可靠。
此外,SOAP格式还支持消息的安全性和可靠性,通过支持加密、认证和事务管理等特性,确保消息在传递的过程中的保密性和完整性。
WebService SOAP格式具有许多优势。
首先,它具有平台和编程语言的独立性。
由于SOAP格式使用XML来封装数据,所以无论是哪种编程语言,以及在哪种平台上实现的Web服务,只要遵循SOAP格式的约定,就可以实现互操作性。
这种独立性使得不同的系统可以轻松地进行集成和交互,提高了系统的灵活性和可扩展性。
其次,使用SOAP格式可以支持远程过程调用(RPC)的功能。
通过定义方法的名称、参数和返回值等信息,客户端可以通过SOAP消息向远程的Web服务发送请求,并获取相应的结果。
这种远程调用的方式使得不同系统之间的耦合度降低,使得系统更易于维护和升级。
另外,SOAP协议还支持消息的可靠性和事务保证。
通过使用SOAP头部元素和提供相应的协议绑定,可以确保消息在传递的过程中的可靠性,并支持事务管理。
在实际应用中,WebService SOAP格式被广泛应用于企业应用集成(EAI)、服务导向架构(SOA)和云计算等领域。
常用系统数据对接协议概述系统间的数据传输和交换是现代信息化环境中普遍存在的需求。
为了实现不同系统之间的数据共享和互操作,常用系统数据对接协议应运而生。
本文将介绍一些常用的系统数据对接协议,包括SOAP、RESTful、GraphQL和MQTT,并对它们的特点和适用场景进行分析。
一、SOAP协议SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在Web服务之间进行通信。
SOAP协议通过HTTP或SMTP等传输协议在网络上传递XML消息。
SOAP消息由SOAP头和SOAP体组成,可以使用不同的编码方式如XML、JSON等。
SOAP协议具有强大的扩展性和安全性,适用于复杂的企业级系统集成。
二、RESTful协议RESTful(Representational State Transfer)是一种基于HTTP的架构风格,用于构建网络服务的协议。
RESTful协议通过HTTP的GET、POST、PUT、DELETE等方法对资源进行操作,并使用URL来表示资源。
RESTful协议具有简单、轻量级和易于理解的特点,适用于Web应用程序和移动应用程序的开发。
三、GraphQL协议GraphQL是一种用于数据查询和操作的开放源代码查询语言和运行时。
GraphQL通过定义数据模型和查询模型,允许客户端按需获取所需的数据。
GraphQL协议具有灵活、高效和易于扩展的特点,适用于大规模的数据驱动型应用程序。
四、MQTT协议MQTT(Message Queuing Telemetry Transport)是一种基于发布-订阅模式的轻量级通信协议。
MQTT协议使用TCP/IP协议栈进行数据传输,适用于小型设备和低带宽、不稳定网络环境。
MQTT协议具有低开销、可靠和高效的特点,适用于物联网和实时通信领域。
特点和适用场景分析SOAP协议适用于需要高度安全性和可靠性的企业级系统集成场景,例如金融、电信等领域。
soap协议请求工具类
SOAP(Simple Object Access Protocol)是一种用于交换结构化信息的协议,通常基于HTTP、HTTPS、SMTP等传输协议。
SOAP协议请求工具类通常用于创建、发送和处理SOAP请求,以下是一些常见的SOAP协议请求工具类:
1. Apache CXF,Apache CXF是一个开源的Web服务框架,提供了丰富的工具和类库用于处理SOAP请求。
它支持从WSDL文件生成客户端代码,并提供了简单的API用于创建和发送SOAP请求。
2. JAX-WS,Java API for XML Web Services(JAX-WS)是Java EE平台的一部分,提供了用于开发和部署Web服务的API。
它包含了一些工具类和注解,可以用于创建和处理SOAP请求。
3. Spring Web Services,Spring Web Services是一个基于Spring框架的Web服务开发工具,它提供了简单的API和工具类用于处理SOAP请求。
它支持从XSD文件生成Java类,并提供了方便的方式来创建和发送SOAP请求。
4. Axis2,Apache Axis2是一个开源的Web服务框架,提供了
丰富的工具和类库用于处理SOAP请求。
它支持从WSDL文件生成客户端代码,并提供了简单的API用于创建和发送SOAP请求。
这些工具类和框架都可以帮助开发人员轻松地处理SOAP请求,从而简化了Web服务的开发和集成过程。
它们提供了丰富的功能和灵活的配置选项,可以满足不同场景下的需求。
当然,选择合适的工具类取决于具体的项目需求和开发团队的技术栈。
希望这些信息能够帮助到你。
WebService的两种⽅式SOAP和REST,之间的区别与优缺点什么是SOAP?SOAP (Simple Object Access Protocol) 顾名思义,是⼀个严格定义的信息交换协议,⽤于在Web Service中把远程调⽤和返回封装成机器可读的格式化数据。
事实上SOAP数据使⽤XML数据格式,定义了⼀整套复杂的标签,以描述调⽤的远程过程、参数、返回值和出错信息等等。
⽽且随着需要的增长,⼜不得增加协议以⽀持安全性,这使SOAP变得异常庞⼤,背离了简单的初衷。
另⼀⽅⾯,各个服务器都可以基于这个协议推出⾃⼰的API,即使它们提供的服务及其相似,定义的API也不尽相同,这⼜导致了WSDL的诞⽣。
WSDL (Web Service Description Language) 也遵循XML格式,⽤来描述哪个服务器提供什么服务,怎样找到它,以及该服务使⽤怎样的接⼝规范,简⾔之,服务发现。
现在,使⽤Web Service的过程变成,获得该服务的WSDL描述,根据WSDL构造⼀条格式化的SOAP请求发送给服务器,然后接收⼀条同样SOAP格式的应答,最后根据先前的WSDL解码数据。
绝⼤多数情况下,请求和应答使⽤HTTP协议传输,那么发送请求就使⽤HTTP的POST⽅法。
什么是REST?REST (REpresentational State Transfort) 形式上应该表述为客户端通过申请资源来实现状态的转换,在这个⾓度系统可以看成⼀台虚拟的状态机。
抛开R. T. Fielding博⼠论⽂⾥晦涩的理论不说,REST应该满⾜这样的特点:1)客户端和服务器结构;2)连接协议具有⽆状态性;3)能够利⽤Cache机制增进性能;4)层次化的系统;5)按需代码。
说到底,REST只是⼀种架构风格,⽽不是协议或标准。
但这种新的风格(也许已经历史悠久?)对现有的以SOAP为代表的Web Service造成的冲击也是⾰命性的,因为它⾯向资源,甚⾄连服务也抽象成资源,因为它和HTTP紧密结合,因为它服务器⽆状态。
在本文中,我将深入探讨soapxml报文入参的格式,并提供全面的评估和深度的理解。
在文章中,我会从简单到复杂、由浅入深地分析这一主题,以便您能更深入地理解。
让我们来了解一下soapxml报文的基本结构。
SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在web服务之间进行交互。
SOAP消息是以XML格式编写的,具有统一的结构和内容,包括envelope、header和body等部分。
1. Envelope:SOAP消息的根元素,包含了整个消息。
2. Header:可选的部分,包含与消息相关的头部信息。
3. Body:包含实际的调用信息。
了解了SOAP消息的基本结构之后,让我们深入探讨soapxml报文的入参格式。
在SOAP消息中,入参通常包含在body部分,并且需要按照特定的格式进行编写。
在SOAP消息的body部分,入参的格式可以根据具体的需求来定义。
常见的入参格式包括但不限于以下几种:1. 单个参数的入参格式:```xml<soap:Body><GetStockPrice xmlns=""><StockName>IBM</StockName></GetStockPrice></soap:Body>```2. 多个参数的入参格式:```xml<soap:Body><AddUser xmlns=""><UserName>JohnDoe</UserName><Password>123456</Password></AddUser></soap:Body>```无论是单个参数还是多个参数的入参格式,都需要严格遵循XML的语法规则,并按照约定的命名空间来定义元素和属性。
SAOP协议1. 概述SAOP(Simple Asynchronous Object Protocol)是一种简单的异步对象协议,用于在分布式系统中进行对象间通信。
它基于SOAP协议,并对其进行了简化和优化,旨在提高通信效率和可靠性。
2. 特点2.1 异步通信SAOP协议通过异步通信的方式进行对象间的数据传输。
异步通信允许发送方在发送请求后立即继续执行其他操作,而不需要等待接收方的响应。
这种机制使得系统更加高效和响应灵活,尤其在网络延迟较高的情况下效果更为明显。
2.2 简化消息格式为了提高通信效率和减少网络开销,SAOP协议对消息格式进行了简化。
相比于SOAP中冗长的XML格式,SAOP使用轻量级的JSON格式作为消息的传输载体。
这不仅减小了数据量,还降低了解析和序列化的复杂度,提高了整体性能。
2.3 可靠性保证SAOP协议通过引入事务机制和消息确认机制,保证了通信的可靠性。
事务机制确保了请求和响应的一致性,如果在通信过程中发生错误,可以回滚事务,避免数据损坏。
而消息确认机制则确保了消息的准确传递,接收方会向发送方发送确认消息,以确保消息的可靠性。
3. SAOP通信过程SAOP协议的通信过程一般包括请求和响应的交互过程,具体如下:3.1 请求1.客户端通过SAOP协议封装请求对象,并设置请求数据和目标对象等信息。
2.客户端向目标对象发送请求。
3.目标对象接收到请求后,进行请求的解析和处理。
4.目标对象根据请求的具体内容进行相关操作,并生成响应结果。
3.2 响应5.目标对象通过SAOP协议封装响应对象,并设置响应数据和状态码等信息。
6.目标对象向客户端发送响应。
7.客户端接收到响应后,进行响应的解析和处理。
8.客户端根据响应的状态码和数据进行后续操作。
4. SAOP示例下面是一个简单的SAOP示例,用于说明SAOP协议的使用:```json // 请求示例 {。
SOAP概述简介SOAP,简单地讲,就是允许Java对象和COM对象在分布式、分散的、基于Web的环境中彼此通话。
更一般地讲,SOAP允许任何类型的对象(或代码)??在任何平台上,以任何一种语言??相互通信。
目前,已在2 0多个平台上,以60多种语言实现了SOAP。
突然之间,任何地方的对象,无论本地或远程的,无论大或小,都可以互操作。
Brad Pitt和Edward Norton,就像两种截然不同的对象,最终能够通信。
回顾一下这种技术,我最开始将在Web服务的大环境下介绍SOAP, SOAP作为一种协议,它与UDDI(通用描述、发现和集成)一起提供了业务间注册和消息传递服务。
我还将讨论揭示“发布-查找-绑定”范例的基于Web的基础,并介绍SOAP包装、传输和发送机制。
Web服务的发展先把所有大肆张扬的宣传放在一边,SOAP仅仅只是一种组件??虽然是一种中心组件??用于把Web的蓝图描述成用于业务操作的、基于标准的、语言与平台中性的架构。
这些业务操作通常被标上了“Web 服务” 的通用标签,但是Web服务自身也只是一种支持它们的良好的基础。
相应地,Internet有一种快捷的n层基础。
网络分层在Web服务的发展过程中,有3种网络层是显而易见的:TCP/IP、 HTTP/HTML和XML。
现在这3个层相继构建在彼此的顶上,并保持相互之间的兼容性。
第1层,TCP/IP协议,主要关注的是以分组形式通过线缆传输数据。
作为一种确保通过公共网络传输的协议,TCP/IP强调数据传输的可靠性和物理连通性。
起初是把专用网络粘合在一起,现在则是用Web中枢协议来连接网络,更高层次的标准协议如HTTP就是依赖于这种中枢协议的。
第2层,HTTP上的HTML,它是一个显示层,自身关注的是基于浏览器的搜索、检索和信息共享。
它强调的是基于GUI(图形用户界面)的导航和显示格式的处理。
在许多方面,HTML更多地是用于显示,而不是转到别的网页上,并且在可扩展性和真正的编程能力上有所欠缺。
SOAP(Simple Object Access Protocol)是一种基于XML的协议,用于在网络中发送结构化信息。
SOAP接口通常用于Web服务中,以实现不同系统之间的数据交换和远程过程调用。
SOAP接口的格式包括以下几个部分:1.Envelope(信封):这是SOAP消息的根元素,用于封装消息的内容。
它包含以下子元素:1.Header(头部):包含与消息处理相关的元数据和报头信息。
它可以包含多个子元素,例如身份验证信息、消息路由信息等。
2.Body(主体):包含实际传输的数据和消息体。
它也可以包含多个子元素,例如请求和响应信息。
2.Fault(错误):这是一个可选的子元素,用于处理错误和异常情况。
它包含以下子元素:1.FaultCode(错误代码):表示错误的类型。
2.FaultString(错误字符串):提供有关错误的描述性文本。
3.FaultActor(错误参与者):指定导致错误的实体。
4.Detail(详细信息):提供有关错误的附加信息。
3.HeaderBlock:用于在SOAP请求和响应中传递额外的信息,例如身份验证凭据、消息路由信息等。
它包含以下子元素:1.EncodingStyle(编码风格):指定用于表示SOAP消息的编码风格。
2.MustUnderstand(必须理解):指示接收方是否必须理解该报头块。
3.RelatesTo(关联):指定与其他SOAP消息之间的关系。
4.FaultBlock:用于在SOAP错误消息中传递错误详细信息。
它包含以下子元素:1.FaultCodeBlock:提供错误的类型代码。
2.FaultStringBlock:提供关于错误的文本描述。
3.FaultActorBlock:指定导致错误的实体。
4.DetailBlock:提供有关错误的附加信息。
这只是SOAP接口的基本结构和常见元素,具体的实现可能会有所不同。
SOAP 协议本身提供了灵活性和可扩展性,可以根据需要进行自定义和扩展。
soap接口调用方式随着互联网的发展,越来越多的应用程序需要与其他应用程序或系统进行交互,从而实现数据传输或功能扩展。
SOAP(简单对象访问协议)是一种基于XML(可扩展标记语言)的协议,用于在分布式环境中进行网络通信。
在本文中,我们将介绍使用SOAP接口的调用方式。
1. 确定所需的SOAP接口在开始调用SOAP接口之前,必须确定所需的接口及其参数。
可能需要解析WSDL(Web Services Description Language)文件来了解可用的接口。
WSDL是一种描述Web服务的XML格式,并提供了有关服务所需的输入和输出参数的详细信息。
2. 创建SOAP请求在调用SOAP接口之前,必须根据接口和参数创建SOAP请求。
SOAP请求是一个XML文档,包含有关服务和消息的信息。
该文档必须遵循SOAP协议和服务约定。
3. 将SOAP请求发送到服务器发送SOAP请求可以使用不同的方法,例如HTTP或HTTPS。
可以使用SOAP client或编程语言中提供的其他工具来发送请求。
在发送请求之前,必须确保服务器地址和端口号正确。
4. 解析SOAP响应SOAP响应是服务器返回的XML文档,并包含有关请求结果的信息。
使用接收到的SOAP响应,可以从中提取所需信息以进行相应的处理。
5. 处理SOAP响应处理SOAP响应可能涉及:- 解析接收到的XML文档- 检查响应状态,例如HTTP状态代码和SOAP响应代码- 提取所需的数据6. 处理异常由于网络或服务问题,可能会出现异常。
在出现异常时,必须对其进行适当处理。
可以在SOAP调用中包含错误处理和异常处理以处理这些情况。
在本文中,我们介绍了使用SOAP接口的调用方式。
这是一种安全且可靠的方式来与其他应用程序或系统进行交互。
无论是企业级应用程序还是Web应用程序,均可以使用SOAP来实现通信。
总之,使用SOAP接口进行调用并不困难,但需要确保所有协议都得到遵守。
SOAP协议分析 1 西安邮电大学 Web服务 课内实验报告书
院系名称 : 计算机学院 实验题目 : SOAP协议分析 学生姓名 : 周从军 专业名称 : 网络工程 班 级 : 网络1101班 学号 : 04112016 时间 : 2014年12月20日 SOAP协议分析
2 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服务器(如MSSOAP协议分析 3 的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=”http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”> ...//Optional ...//Mandatory SOAP封装(Envelope) SOAP封装是一个SOAP消息顶层的元素,可以把它看成一个通过邮政服务寄信时的信封。它包括可选择的SOAP标题和一个强制性的SOAP主体。在SOAP消息中的SOAP封装用Envlop元素表示。所有的元素都用SOAP-ENV命名空间标识符作为前缀,该标识符与http://schemas.xmlsaop.org/soap/envelope相关联的。所有的SOAP元素都与SOAP-ENV前缀相关联,以保证SOAP元素不会与定义的其他元素相互冲突。 SOAP的全局EncodingStyle属性被用于指明在SOAP消息中的编码方式。SOAP规范鼓励的值是http://schemas.xmlsoap.org/soap/encoding.它是与SOAP定义的编码规则相关的命名空间。 SOAP标题(Header) SOAP提供了一种灵活的机制,可以以分散但标准的方式扩展消息,而不是需要通讯的双方事前协商达到一致,这就是利用SOAP Header在SOAP消息中增加特性。如:Actor属性用于指明该消息应由谁进行处理;mustUnderstand属性SOAP协议分析 4 则指明该处理是否是必须的。一个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编码的模式可以在http://schemas.xmlsoap.org/soap/endoding上找到。要想自定义用于数据的具体编码规则,大家可以引用一个外部模式,也可以使用xsi:type机制。 使用xsi:type机制的邮电是,SOAP文档在提结构和数据类型的值方面都是自描述的。缺点是没有描述SOAP消息的格式。 SOAP协议分析 5 下面给出序列化的规则: 所有的值以元素内容的形式表示一个简单之以字符数据表示一个简单之不可以含有元素。每个简单之都不虚使用一个合法的XML大纲数据类型或者使用一个从该数据类型集合里推导出来的数据类型。一个复合值被编码为一个元素序列复合元素的每个字段都使用一个角色:”访问器(accessor)“来加以区分,元素的名字与访问器的名称是一致的。 一个多次引用的简单值或复合值被编码成一个独立的元素这个元素包含一个局部的无需校验的属性,属性名为”id“,类型为”ID”(依照XML规范)。值的每一个accessor对应一个空元素,该元素有一个局部的,无需校验的数学,属性名为”href“,类型为”uri referene“,href属性的值音乐了相对应的独立元素的URI标示符。 数组是SOAP:Array型的复合值我们一个例子来说明一个java对象的SOAP表示: CodeList 1. Foo JavaBean:
Class Foo ( Int i; String s; Public Foo(){) .../*Foo函数的实现*/ } CodeList 2. Foo对象的SOAP表示:
Xmlns:nsl=”run:myservice” SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/“> Xmlns:ns2=”http://foo/type” Xsi:type=”ns2:Foo”> 1000 Hello World Codelist 2中的SOAP XML实例表示一个RPC 调用,该调用将方法地阿姨eatFoo调度到由URI”urn:myservice“标出的Web服务。元素fooParam、i和s被称为访问器(accessor);它们是值的容器。Codelist 2中的xsi:type属性提供访问器的子类型。通常,Web服务提供者和请求者已经预先就每个RPC调用的参数数据类型达成了一致。要对SOAP XML实例进行正确的反序列化,有了这个预先达成的一致就够了,技术没有xsi:type属性也可以。带有显式的xsi:type属性的访问器被称为多态访问器(polymorphic accessor).