SOAP协议

SOAP协议一、SOAP与HTTP的区别HTTP只负责把数据传送过去,不论这个数据是XML、HTML、图片、文本文件或者其他形式。SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等。二、SO

大家好,又见面了,我是你们的朋友全栈君。

一、SOAP与HTTP的区别

HTTP只负责把数据传送过去,不论这个数据是XML、HTML、图片、文本文件或者其他形式。

SOAP协议则定义了怎么把一个对象变成XML文本,在远程如何调用等。

二、SOAP协议简介

  1. SOAP简介

SOAP(Simple Object Accrss Protocol,简单对象访问协议)是一种简单的基于XML的协议,可以使应用程序在分散或分布式的环境中,多数通过HTTP来传输信息的。(soap的默认端口号8880,ftp的代理服务器的默认端口号是21)

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

(1)SOAP信封(Envelope):定义了一个框架,框架描述了消息中的内容是什么,包括消息的内容、发送者、接收者、处理者以及如何处理消息。

(2)SOAP编码规则:定义了一种系列化机制,用于交换应用程序所定义的数据类型的实例。

(3)SOAP RPC表示:定义了用于表示远程过程调用和应答协定。

(4)SOAP绑定:定义了一种使用底层传输协议来完成在节点间交换SOAP信封的约定。

SOAP消息基本上是从发送端到接收端的单向传输,常常结合起来执行类似于请求/应答的模式。

  1. SOAP特性

1) SOAP是一种轻量级通信协议

2) SOAP用于应用程序之间的通信

3) 使用SOAP的应用使用HTTP协议通信

4) SOAP独立于平台

5) SOAP独立于编程语言

6) SOAP基于XML

7) SOAP很简单并可扩展

8) SOAP允许绕过防火墙

三、SOAP消息交换模型

  1. SOAP结点

SOAP结点表示SOAP消息路径的逻辑实体,用于进行消息路由或处理。SOAP结点可以是SOAP消息的发送者、接收方、消息中介。

在SOAP消息模型中,中间方为一种SOAP结点,负责提供发送消息的应用程序和接收方间的消息交换和协议路由功能。中间方结点驻留在发送结点和接收结点之间,负责处理SOAP消息头中定义的部分消息。SOAP发送方和接收方之间可以有0个或多个SOAP中间方,为SOAP接收方提供分布式处理机制。

 

  1. SOAP消息中间方分类

一般,SOAP消息中间方分为两种:

A、转发中间方:转发中间方通过在所转发消息的SOAP消息头块中描述和构造语义和规则,从而实现消息处理。

B、活动中间方:活动中间方利用一组功能为接收方结点修改外部绑定消息,从而提供更多的消息处理操作。

四、SOAP协议解析

SOAP 消息组成(soap的消息对象包括):

所有的SOAP消息都使用XML编码,一条SOAP消息就是一个普通的XML文档,文档包括下列元素:

A、Envelope(信封)元素,必选,可把此XML文档标识为一条SOAP消息。

B、Header(报头)元素,可选,包含头部信息(包含了使消息在到达最终目的地之前,能够被路由到一个或多个中间节点的信息,可能会定义认证信息、事务信息、本地信息)。

C、Body(主体)元素,必选,包含所有的调用和响应信息。

D、Fault元素,位于Body内,可选,提供有关处理此消息所发生错误的信息。

E、Attachment(附件)元素,可选,可通过添加一个或多个附件扩展SOAP消息。

 

所有以上的元素均被声明于针对SOAP封装的默认命名空间中:

http://www.w3.org/2001/12/soap-envelope

以及针对 SOAP 编码和数据类型的默认命名空间:

http://www.w3.org/2001/12/soap-encoding

五、SOAP附件

SOAP消息可以包含XML格式的主SOAP信封,以及包含ASCII或二进制等任何数据格式的SOAP附件。如果SOAP消息包含附件,那么SOAP消息将是一个MIME编码的消息,包含SOAP内容和一个或多个其他类型的附件。因此SOAP消息实际上分为以下两种类型:

A、仅包含XML内容的消息

B、MIME编码的消息,包含初始的XML有效内容以及任何数量的附件。附件可以是任何其他类型的数据。

C、【MIME:Multi-purpose Internet Mail Extensions多用途Internet邮件扩展,是一组技术规范,其目的是使用不同字符集来传递文本,也可以在计算机之间传递各种各样的多媒体数据】

六、SOAP消息绑定

Web服务的有效负载通常包装在SOAP消息中,而SOAP消息结构由WSDL文档中的SOAP绑定定义确定。不同的调用方式和编码方式通过组合可以产生多种绑定样式,而每种样式的应用场景和对应的SOAP消息结构并不相同。如果没有正确的构造SOAP消息,则无法正确交换服务的有效负载。

SOAP Body提供了一种消息交换的机制,是SOAP消息的实际负载,可包含任意内容。SOAP消息体(SOAP Body)通过绑定服务调用方式(RPC或者Document)封装操作,绑定编码方式(Encoded或者Literal)序列化参数。SOAP消息的绑定样式由style、use和encodingStyle三个属性共同设置。style属性指定服务的调用方式,是采用RPC方式还是Document方式;use属性指定消息的编码方式,是采用Encoded方式还是采用Literal方式;而encodingStyle属性指定具体编码规则,例如可以指定SOAP编码规则、XML Schema编码规则等等,通常情况下都是采用XML Schema。

七、SOAP调用过程

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进行通讯交互。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154229.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • sdram控制器设计

    sdram控制器设计SDRAM控制器

    2022年7月1日
  • mysql中int、bigint、smallint 和 tinyint的区别详细介绍

    mysql中int、bigint、smallint 和 tinyint的区别详细介绍

    2021年10月25日
  • 东软始业教育内容提纲(2020)(后附题目)

    东软始业教育内容提纲(2020)(后附题目)东软始业教育内容提纲(后附题目)——2012年8月修正版写在前面:至各位兄弟姐妹,希望大家都能顺利通过!有些题目略微有些变动,总体内容不变。后面的题目绝大多数都在列了,剩余的注意搜索关键字,在前面提纲部分一定有!在百度上搜索一次只能搜索三页,建议大家先下载下来,准备好再开始考试,这样可以全篇搜索。40分的极致不是我的追求,38分这个绝对可以有!1)

    2022年5月10日
  • 电脑蓝屏错误代码0x000000ED_电脑蓝屏0*000000ed怎么解决

    电脑蓝屏错误代码0x000000ED_电脑蓝屏0*000000ed怎么解决电脑蓝屏的原因很多,不同的电脑蓝屏显示的代码不同,对应的解决方法也不同。最近就有网友说自己的电脑蓝屏代码0x000000ed怎么办,不知道0x000000ed是什么意思。今天小编就教下大家修复电脑蓝屏代码0x000000ed的解决方法。0x000000ed蓝屏原因:说明I/0子系统试图加载到引导卷时失败。一般因为不正常断电导致的硬盘故障,从而导致启动时不能正常加载。具体的解决方法如下:1、先开机按f8看能否进入安全模式,能够进入的话,打开运行/输入CMD,键入命令chkdsk/f/r回…

    2022年10月8日
  • java integer long 转换_long(Long)与int(Integer)之间的转换

    java integer long 转换_long(Long)与int(Integer)之间的转换1.将long型转化为int型,这里的long型是基础类型:longa=10;intb=(int)a;2.将Long型转换为int型的,这里的Long型是包装类型:Longa=10;intb=a.intValue();3.将Long型转换为Integer型的,这里的Long型是包装类型:Longa=10;;Integerb=a.intValue(…

    2022年6月5日
  • 氚云erp_氚云登录

    氚云erp_氚云登录1产品价值1.1核心优势1.2销售管理者的烦恼1.3产品价值-解决销售人员的烦恼1.4氚云CRM帮助企业提高工作效率、促进团队业绩顺利达成从客户开发、外勤,联系人的维护,客户的跟进商机的有效推进到合同的签定成交以及发票、回款等销售生命周期管理,让销售过程更精细透明。协助销售精英对销售过程进行管理科学预测销售业…

    2022年11月3日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号