目录

1、SOAP是什么?

2、SOAP特性

3、SOAP消息组成

4、SOAP调用

5、SOAP和HTTP


1、SOAP是什么?

SOAP(Simple Object Access Protocol,即简单对象访问协议) ,是一个轻量级协议,用于在分散的分布式环境中使用XML在对等体之间交换结构化和类型化的信息。或者更简单地说:SOAP是一个基于XML的通信协议(SOAP被认为是第二代XML协议,第一代具有代表性的技术叫XML-RPC)。

SOAP使用XML数据格式,以描述调用的远程接口、参数、返回值和出错信息等等。它可以基于多种传输协议来传递消息(HTTP/HTTPS、SMTP、TCP、UDP等)。

2、SOAP特性

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

3、SOAP消息组成

由四部分组成:

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

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

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

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

4、SOAP调用

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

摘自 w3school:SOAP 实例

在下面的例子中:一个 GetStockPrice 请求被发送到了服务器,此请求有一个 StockName 参数,而在响应中则会返回一个 Price 参数,此功能的命名空间被定义在此地址中: http://www.example.org/stock

SOAP请求

POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Body xmlns:m="http://www.example.org/stock"><m:GetStockPrice><m:StockName>IBM</m:StockName></m:GetStockPrice></soap:Body></soap:Envelope>

SOAP响应

HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Body xmlns:m="http://www.example.org/stock"><m:GetStockPriceResponse><m:Price>34.5</m:Price></m:GetStockPriceResponse></soap:Body></soap:Envelope>

5、SOAP和HTTP

虽然SOAP独立于传输,但它通常都绑定到HTTP;

SOAP的主要目的是用在web服务系统中进行数据交换,而http是最优的选择

1. HTTP本身的优势

web服务是指使用web技术(http、url等)构建的信息服务,http是被设计用于web系统进行信息交换的协议,它适配这些web技术。SOAP如果不使用HTTP,就要创建一个新的适配web技术的传输协议。http是应用层协议,并且是短连接的、很流行的协议。用它来交换web服务数据十分轻松简单,因为它不必像tcp/udp一样需要控制创建、连接和断开,不必进行二进制的封包和解包

2. HTTP完善的技术设施
http之所以可以被大家轻松地开放,不仅仅因为是提供web服务访问的需要,还因为http和web服务器(Apache、Nginx等)经过了多年的测试,因此保护它变得"更容易"。

所以,SOAP绑定于HTTP,可以利用HTTP的成熟的基础设施(http本身和成熟的web服务器等),与其它http消息一样轻松穿越防火墙没有额外的安全隐患部署web服务没有额外的成本

【SOAP-WebService系列】SOAP学习笔记相关推荐

  1. 斯坦福大学CS520知识图谱系列课程学习笔记:第三讲高级的知识图谱是什么样的

    这一讲的主题是:一些高级的知识图谱是什么样的.三位讲者分别从他们各自带领的团队构建出来的高质量的知识图谱实例出发,从中我们可以认识到一些大佬们构建的优秀的知识图谱产品有哪些特点和优势,从中对我们自己构 ...

  2. 斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱

    上一讲我们学习了知识图谱的一些基本概念: 斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱 本节课程关于如何构建知识图谱,因为知识图谱的构建是整个知识图谱领域的一个非常核心且基础的工 ...

  3. python3《机器学习实战系列》学习笔记----3.2 决策树实战

    前言 一.ID3算法构造决策树 1.1 背景 1.2 信息增益计算 1.3 递归生成决策树 二.使用Matplotlib注解绘制树形图 2.1 Matplotlib注解 2.2 构造注解树 三.测试和 ...

  4. mysql入门很简单系列视频-学习笔记

    mysql入门很简单系列视频-学习笔记 视频链接:mysql入门很简单系列视频 https://www.bilibili.com/video/av14920200/ 以前主要就了解DDL.DML.DC ...

  5. S32K系列S32K144学习笔记——LPIT0

    一用S32K144苦似海,道友,能不用,千万不去用. 本例程基以下如图所示接口操作,MCU为S32K144,开发平台S32DSworkspace 功能描述:开启LPIT0定时器,LED以0.5s时间间 ...

  6. oracle 方泽宇_斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱...

    上一讲我们学习了知识图谱的一些基本概念:泽宇:斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱​zhuanlan.zhihu.com 本节课程关于如何构建知识图谱,因为知识图谱的构建 ...

  7. Vue数据代理+事件处理+事件修饰符的作用+计算属性的使用,尚硅谷Vue系列教程学习笔记(2)

    尚硅谷Vue系列教程学习笔记(2) 参考课程:<尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通> 参考链接:https://www.bilibili.com/video/ ...

  8. soap soapenv区别_soap学习笔记(二)-----soap入门篇

    SOAP的全称是Simple Object Access Protocol,即简单对象访问协议.简单地说,SOAP是一种有线协议,类似于CORBA的IIOP.DCOM的ORPC或Java远程方法调用的 ...

  9. Lua入门系列----pil学习笔记之Getting Start

    本文作者:sodme 本文出处:http://blog.csdn.net/sodme 声明: 本文可以不经作者同意, 任意复制, 转载, 但任何对本文的引用都请保留文章开始前三行的作者, 出处以及声明 ...

  10. 斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱

    随着知识图谱在人工智能各个领域的广泛使用,知识图谱受到越来越多AI研究人员的关注和学习,已经成为人工智能迈向认知系统的关键技术之一.之前,斯坦福大学的面向计算机视觉的CS231n和面向自然语言处理的C ...

最新文章

  1. mysql 导入导出 csv_mysql 导出导入数据 -csv
  2. python数据库管理实例_西游之路——python全栈——学员管理实例之数据库设计
  3. linux sendmail 发送邮件
  4. Qt 清空QPixMap
  5. 【逆水寒三周年】大型MMO项目UI管理的价值与责任
  6. oracle如何处理死锁,Oracle死锁处理实例
  7. Angular SPA基于Ocelot API网关与IdentityServer4的身份认证与授权(三)
  8. 王道操作系统考研笔记——2.1.8 调度算法的评价指标
  9. JavaScript,等比例缩放图片的函数,很好用。
  10. 优化就是在和时间赛跑
  11. matlab适应度函数ga,ga程序中适应度函数fitness function向量化问题
  12. 2016百度之星资格赛总结
  13. 如何保证缓存与数据库双写时的数据一致性?
  14. 基于Linux的小项目-在线词典
  15. 程序员首选编程电脑【火爆来袭】
  16. 科来网络分析系统 6.7 技术交流版序列号
  17. 网络协议、socket、webSocket
  18. 网络安全渗透高级工具(黑客工具软件大全100套)
  19. 网络 | OSI七层模型各层常见协议
  20. W10虚拟机一开机电脑蓝屏重启

热门文章

  1. Linux查看机器CPU、内存使用情况,硬盘大小
  2. 成功的要诀是意志力,可意志力是什么
  3. sys.setdefaultencoding 没有这个方法_没有时间?工作太忙?按下葫芦浮起瓢?掌握这个方法很重要...
  4. uni-app中打开另一个app如何实现?
  5. 漏电保护器跳闸原因的查找和解决
  6. 如何跳过MySQL的root密码
  7. 本周AI热点回顾:王者荣耀AI绝悟完全体开启,英雄随便选;2张图片就能「算出」一段视频;Nature文章明年起可免费下载
  8. OSChina 周二乱弹 —— 风萧萧兮易水寒
  9. pandas案例:旅游数据处理
  10. 手机隐私泄漏都因为干了这些事!快查查这些事情你做过没