SOAP协议

这篇具有很好参考价值的文章主要介绍了SOAP协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SOAP协议

1. 简介

SOAP(Simple Object Accrss Protocol,简单对象访问协议)是一种简单的基于XML的协议。要传输的信息以SOAP消息为载体,所有的SOAP消息都使用XML形式编码,以XML格式封装,并绑定在HTTP协议上传递。

SOAP操作是面向文件的,它把XML文件作为输入输出消息的一部分。在SOAP消息对象框架中,每个XML文件都是一条消息的独立部分,而每条消息都是一个对象。如果SOAP消息中包括多个XML文件,那么它就存在多个消息部对象。每个消息部对象封装一个独立的消息部或者一个XML文件。

SOAP是Web Service的通信协议,是基于XML语言和XSD标准,其定义了一套编码规则,编码规则定义如何将数据表示为消息,以及怎样通过HTTP协议来传输SOAP消息,由四部分组成:

  1. SOAP信封(Envelope):定义了一个框架,框架描述了消息中的内容是什么,包括消息的内容、发送者、接收者、处理者以及如何处理消息。
  2. SOAP编码规则:定义了一种系列化机制,用于交换应用程序所定义的数据类型的实例。
  3. OAP RPC表示:定义了用于表示远程过程调用和应答协定。
  4. SOAP绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP信封的约定。

2. 特性

  1. SOAP是一种轻量级通信协议
  2. 用于应用程序之间的通信
  3. 使用SOAP的应用使用HTTP协议通信
  4. 独立于平台
  5. 独立于编程语言
  6. 基于XML
  7. 很简单并可扩展
  8. 允许绕过防火墙

3. soap消息组成

一条SOAP消息就是一个普通的XML文档,文档包括下列元素:

  1. Envelope(信封)元素,必选,可把此XML文档标识为一条SOAP消息。
  2. Header(报头)元素,可选,包含头部信息(包含了使消息在到达最终目的地之前,能够被路由到一个或多个中间节点的信息)。
  3. Body(主体)元素,必选,包含所有的调用和响应信息。
  4. Fault元素,位于Body内,可选,提供有关处理此消息所发生错误的信息。
  5. Attachment(附件)元素,可选,可通过添加一个或多个附件扩展SOAP消息。

3.1 SOAP消息

假设用户要通过互联网在线查询火车票的票价‚在互联网上存在一个组件其中的 一个名为Getting-Price的方法可完成这个功能,其接口为gettingprice。

3.1.1 SOAP请求

客户端的SOAP请求以HTTP头部构架和所需的XML格式被封装成HTTP包发送至服务器。

soap协议,软件工程,网络,java,网络协议

  • 前四行是标准的HTTP消息格式,POST是HTTP的谓词 Host、Content-Type 和 Content-Length 都是 HTTP 消息格式的必要内容。Content-Type中的 text/xml 表示发送给服务器(或者可扫描应用程序头 部的防火墙)的XML消息的有效载荷
  • Envelope和Body提供一套常规的有效载荷封装机制
  • <Getting Price> 包含一个<symbol> 元素用以获得所查询火车票的票价,比如说是T132。在SOAP规范中,要激活一个组件是由指定的URI(Uniform Resource Identifier)中的代码来决定如何激活该组件并调用相应的方法。
3.1.2 SOAP应答

当服务器识别SOAP请求中的SOAPMethodName后‚调用相应的具体过程并将结果 封装在SOAP应答中返回给客户端。

soap协议,软件工程,网络,java,网络协议

前三行仍是标准的HTTP消息格式,其中第一行表示对上次SOAP请求的应答。<Getting-PriceRe sponse> 包含了对查询的火车票的价格。

3.2 SOAP 封装

一个SOAP消息就是一个XML文档,它包括SOAP封装、SOAP头(可选)和SOAP体。

  • SOAP封装是描述SOAP消息的XML文档中的顶层元素。
  • SOAP头为尚未事先约定的分散的通信各方提供了向SOAP消息中增加相关要素(feature)的机制。同时定义了一些属性来标明这些要素(feature) 由谁来处理及是否可选;
  • SOAP体是一个容器,包含了消息的最终接收者所需信息。SOAP为SOAP体定义了一个Fault元素用来报告错误信息。
3.2.1 SOAP封装

元素名是 Envelope 是SOAP消息中的必需元素。当它包含了名域声明、附加属性 或者附加子元素时,那么它们必须具备名域资格,附加子元素必须写在SOAP体元素之后。

3.2.2 SOAP头

元素名是 Header 它是一个可选元素。如果写明,则必须是SOAP封装元素的第一个直接子元素。SOAP头可包含许多头条目(header entry),它们都是SOAP头元素的直接子元素,并且都必须具备名域资格。在实际应用中,这些头条目所能完成的典型任务是做鉴定、事物管理和债务偿还等。

其编码必须遵守的规则有:

  1. 一个头条目必须能被识别‚包括名域空间URI和局域名称。所有头元 素的子元素都必须具备名域资格;
  2. SOAP的encodingStyle属性可用来表明头条目的编码方式;
  3. SOAP 的mustUnderstand和actor属性指出如何处理该条目及由谁来处理。
3.2.3 SOAP体

元素名是Body,是SOAP消息中的必需元素而且是SOAP封装元素的直接子元素。 如果存在SOAP头元素,那么它必须紧跟其后,否则就是SOAP封装元素的第一个直接子元素。

SOAP体也可包括一些体条目,它们都是SOAP体元素的直接子元素。并且可具备名域资格。SOAP定义了 SOAPFault元素来指示错误信息。在实际应用中‚SOAP体元素多用来马歇尔RPC调用和错误报告等,其编码必须遵守的规则有:

  1. 一个体条目也必须能被识别‚包括名域空间URI和局域名称。所有体元素 的子元素都可以具备名域资格

  2. SOAP的encodingStyle属性可用来表明体条目的编码方式。SOAP头和 体各自还可以包含自己的属性。

  3. 具体请参考协议规范的原文。

尽管SOAP的头元素和体元素被定义为 独立的元素,但它们实际上是相互关联的。当头条目和体条目都需要缺省的actor,并且SOAP的mustUnderstand属性值为1时,两者是等价的。

4. 调用过程

Web service一般就是用SOAP协议通过HTTP来调用它,其实他就是一个WSDL文档,客户都可以阅读WSDL文档来用这个Web service。客户根据WSDL描述文档,会生成一个SOAP请求消息。Web service都是放在Web服务器 (如IIS) 后面的,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到Web服务器来。Web服务器再把这些请求转发给Web service请求处理器。请求处理器的作用在于,解析收到的SOAP请求,调用Web service,然后再生成相应的SOAP应答。Web服务器得到SOAP应答后,会再通过HTTP应答的方式把它送回到客户端。

SOAP简单的理解,就是这样的一个开放协议SOAP=RPC+HTTP+XML:采用HTTP作为底层通讯协议;RPC作为远程调用途径,XML作为数据传送的格式,允许服务提供者和服务客户经过防火墙在INTERNET进行通讯交互。

5. SOAP 协议在WINDOWS环境下的实现

用SOAP实现远程调用,就是在相同或不同平台之间完成客户端和服务器端的通信。即客户端发送SOAP请求服务器端接受请求,分析其中包含的信息‚调用相应的函数并将返回值封装成SOAP消息 发送给客户端最后客户端解析应答消息。下面描述SOAP协议在WINDOWS环境下的实现过程。

5.1 体系结构

用户程序可以通过SOAP实现远程调用。首先‚用户程序向一个名为SoapClient的对象发送消息请求服务器上某一名为operation的操作‚SoapClient处理该消息后向服务器发出SOAP请求。在服务器端,由一个名为SoapServer的对象接受请求调用相应的组件方法执行相应的操作。SoapServer获得操作结果后将其以SOAP应答的形式返回给客户端。最后客户端的SoapClient处理SOAP应答并将结果封装在消息中发送给用户程序。这样通过SoapClient和SoapServer的桥梁作用,客户端便可象调用本地函数一样调用服务器端的函数。

soap协议,软件工程,网络,java,网络协议

在实际应用中,当使用SoapClient和SoapServer进行SOAP的请求应答时,客户端和服务器端都必须 先通过一个名为WSDLReader的对象来获取WSDL文件中的SOAP消息结构‚以此保证通信的一致性。 下面分别详细描述客户端和服务器端的具体实现情况。

5.1.1 客户端

SoapClient在接受用户程序的 远程服务请求后,一方面通过WSDLReader从服务器上获取WSDL文件,为相应的服务操作产生一个名 为WSDLOperation的对象,WSDLOperation调用名为GetOperationParts的方法,获得操作的输入输出消息格式;另一方面SoapClient为服务操作的每个参数产生一个名为SoapMapper的对象并调入各对象操作所 需的参数值。

一个名为SoapSerializer的对象从相应的SoapMapper中建立SOAP请求消息并通过一个名 为SoapConnecter的对象发送给服务器,同时侦听服务器的应答。当服务器处理SOAP请求并将SOAP应 答返回给客户端后‚SoapReader将结果赋值给相应的SoapMapper‚同时也将结果返回给用户程序。

soap协议,软件工程,网络,java,网络协议

5.1.2 服务器端

当服务器端的SoapServer接收到客户端的SOAP请求后,一方面SoapReader将请求消息存放到一个 DOM结构中WSDLReader将WSDL文件存放到另一个DOM结构中,然后分析该请求并为其产生一个 WSDLOperation对象。WSDLOperation调用GetOperationParts方法获得操作的输入输出消息格式;另一方 面‚SoapServer为服务操作的每个参数产生SoapMapper对象,并调入各对象操作所需的参数值。SoapServer调用与该操作相应的组件方法后,将返回结果映射到相应的SoapMapper对象中,并用SoapSe rializer将返回值封装在SOAP应答消息中发送至客户端。

soap协议,软件工程,网络,java,网络协议文章来源地址https://www.toymoban.com/news/detail-636754.html

到了这里,关于SOAP协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 调用 WebService 、java调用Soap请求、Java对接soap接口

    工作第一次遇到对接soap接口,觉得有必要记录一下,毕竟踩了不少坑,网上帖子很多但大都不全,也不可能完全满足自己的需求,于是就有了下面的代码: 除了只是借鉴, 注意事项: 1.http://ip:port/xxx/xxx/soap?wsdl有些soap接口,对面是不需要穿?wsdl对接时要问出清 2. httpPost.set

    2024年02月05日
    浏览(52)
  • 计算机,软件工程,网络工程,大数据专业毕业设计选题有哪些(附源码获取途径)专注于Java技术领域和毕业项目实战

    ✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 大家好!我是你们的毕设周学长,知道你们即将面临毕业设计的任务,所以

    2024年02月08日
    浏览(47)
  • 一文带你了解Java对接soap接口

    soap是一种简单的基于XML的协议:HTTP+RPC+XML A、Envelope(信封)元素,必选,可把此XML文档标识为一条SOAP消息。 B、Header(报头)元素,可选,包含头部信息(包含了使消息在到达最终目的地之前,能够被路由到一个或多个中间节点的信息)。 C、Body(主体)元素,必选,包含所有

    2024年02月08日
    浏览(40)
  • 易语言软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作

    随着信息技术的不断发展,易语言软件定制开发已成为许多公司的一项重要业务。本文将探讨如何利用易语言承接软件定制软件开发脚本开发协议软件电脑网站APP应用视频制作工程制作。 一、易语言概述 易语言是一种简单易学的编程语言,它采用中文编程,让不会英文的初

    2024年02月08日
    浏览(81)
  • API 接口主流协议有哪些?如何创建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同协议?

    API 接口协议繁多,不同的协议有着不同的使用场景。70% 互联网应用开发者日常仅会接触到最通用的 HTTP 协议,相信大家希望了解更多其他协议的信息。我们今天会给大家介绍各种 API 接口主流协议和他们之间的关系。 接口协议分成两类: 传输层协议和应用层协议。 传输层协

    2023年04月21日
    浏览(92)
  • 软件工程还是网络安全专业好

    这个问题需要根据个人的兴趣和职业规划来选择。 从兴趣方面来看,如果你对计算机系统的设计和开发更感兴趣,那么选择软件工程专业可能更适合你。如果你对计算机系统的安全性更感兴趣,那么选择网络安全专业可能更适合你。 从职业规划方面来看,现代社会的发展越

    2024年02月13日
    浏览(36)
  • java spring cloud 工程企业管理软件-综合型项目管理软件-工程系统源码

    Java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1、项目进度图表  2、项目信息 施工地图:1、展示当前角色权限下能

    2024年02月06日
    浏览(57)
  • 十年JAVA搬砖路——软件工程概述

    软件工程是一门关注软件开发过程的学科 ,它涉及到软件的设计、开发、测试、部署和维护等方面。软件工程的目标是通过系统化的方法和工具,以确保软件项目能够按时、按预算和按要求完成。 软件生命周期:软件生命周期是指软件从概念到退役的整个过程,包括需求分

    2024年02月10日
    浏览(38)
  • 计算机,软件工程,网络工程,大数据专业毕业设计选题有哪些(附源码获取)

    ✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 大家好!我是你们的毕设周学长,知道你们即将面临毕业设计的任务,所以

    2024年02月07日
    浏览(68)
  • Java版本工程管理系统软件源码 自主研发,工程行业适用

          Java版工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示1、项目进度图表  2、项目信息 施工地图:1、展示当前角色

    2023年04月27日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包