-
SOAP ABC
作者: 何杭军 | ||
什么是SOAP? SOAP 是一个基于XML的通信协议,在该协议下,软件组件和应用程序能够通过标准的HTTP协议通信。 谁起草了 SOAP? SOAP 由UserLand, Ariba, Commerce One, Compaq, Developmentor, HP, IBM, IONA, Lotus, Microsoft, 和 SAP共同起草. 为什么SOAP? 在internet环境下应用开发的一个重要方面是:应用之间应该能够相互通信。传统的方法是在分布式对象比如:DCOM CORBA之间进行相互的远程过程调用,但在这种场合下HTTP协议毫无用武之地,因此在internet环境下的远程过程调用不是一件容易的事情,在internet上使用RPC还存在安全的问题,防火墙和代理服务器还很有可能阻塞这种类型的数据传输。 使用HTTP是一种很好的主意,因为HTTP协议得到了所有的浏览器和服务器的支持,SOAP的宗旨就在于发挥HTTP和XML优点,从而完成在应用之间的交互。 SOAP 1.1 和 W3C 起草SOAP的各个大公司在2000年5月份向W3C提交SOAP,目前SOAP是W3C的note。 SOAP方方面面: SOAP 是一个轻量级的通讯协议(lightweight communication protocol ) SOAP 用于应用和应用之间的通讯 使用SOAP的应用通过HTTP通讯 SOAP 独立于任何组件技术 SOAP 独立于编程语言 SOAP 基于XML SOAP 简单并且具有良好的扩展性 SOAP 已向W3C提交 SOAP 有望成为W3C的标准 微软和 SOAP SOAP是微软的WINDOWS DNA 2000体系结构中的关键技术。 SOAP 组成 一个 SOAP消息是一个普通的XML文档,该文档包含如下的元素: SOAP envelope,定义消息的内容 SOAP header (可选), 包含头信息 SOAP body,包含所有的调用和会应信息 SOAP 的一个例子 <SOAP-ENV:Envelope> <SOAP-ENV:Body> <GetPrice> <Item>Apples</Item> </GetPrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 上面的例子是一个简单的XML文档,要求得到苹果的价格信息。 SOAP 名域 SOAP envelope元素的缺省名域: http://schemas.xmlsoap.org/soap/envelope/ SOAP encoding and data types的缺省名域: http://schemas.xmlsoap.org/soap/encoding/ 部分重要的语法规则 SOAP消息必须用XML编码 SOAP消息必须有一个 SOAP Envelope SOAP消息可以又一个SOAP header SOAP消息必须有一个SOAP Body SOAP消息必须使用SOAP Envelope 名域 SOAP消息必须使用 SOAP Encoding 名域 SOAP消息 不能包含DTD引用 SOAP消息不能有XML处理指令 以下是一个SOAP的例子,该SOAP消息被封装在一个HTTP请求中,GetStockPrice请求被发送到server。该请求具有一个 StockName参数,返回一个相应的StockPrice。请注意这里的自定义名域,该名域规定了特殊的元素所对应的服务,只有这样通信的双方才能理解对方的要求。 <SOAP-ENV:Envelope> <SOAP-ENV:Body> <xmlns:m="http://www.stock.org/stock" /> <m:GetStockPrice> <StockName>IBM</StockName> </m:GetStockPrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 封装在HTTP中的SOAP应答 <SOAP-ENV:Envelope> <SOAP-ENV:Body> <xmlns:m="http://www.stock.org/stock" /> <m:GetStockPriceResponse> <Price>34.5</Price> </m:GetStockPriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> SOAP的出错信息 SOAP的出错信息必须包含在Fault元素当中,而Fault元素如果出现,只能在body元素中出现,并只出现一次。 它的子元素如下表: Sub Element Description <faultcode> A code identifying the error <faultstring> The error as a string <faultactor> Who caused the error <detail> Specific error information |
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
数据库审计与智能监控:从日志分析到异
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比