SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换。
或者更简单地说:SOAP 是用于访问网络服务的协议。

为什么使用 SOAP?
SOAP提供了一种标准的方法,使得不同平台不同语言的应用程序可以相互通信。

SOAP 构建模块
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
可选的 Header 元素,包含头部信息
必需的 Body 元素,包含所有的调用和响应信息
可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
所有以上的元素均被声明于针对 SOAP 封装的默认命名空间中:
http://www.w3.org/2001/12/soap-envelope
以及针对 SOAP 编码和数据类型的默认命名空间:
http://www.w3.org/2001/12/soap-encoding
soap必须包含envelope和encoding命名空间的定义,这两个schema包含了soap的消息结构定义和soap消息的数据类型定义

SOAP Envelope 元素
必需的 SOAP 的 Envelope 元素是 SOAP 消息的根元素。它可把 XML 文档定义为 SOAP 消息。

<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">...Message information goes here...
</soap:Envelope>

xmlns:soap 命名空间
SOAP 消息必须拥有与命名空间 “http://www.w3.org/2001/12/soap-envelope” 相关联的一个 Envelope 元素。
如果使用了不同的命名空间,应用程序会发生错误,并抛弃此消息。
encodingStyle 属性
SOAP 的 encodingStyle 属性用于定义在文档中使用的数据类型。此属性可出现在任何 SOAP 元素中,并会被应用到元素的内容及元素的所有子元素上。
SOAP 消息没有默认的编码方式。

SOAP Header 元素
可选的 SOAP Header 元素包含头部信息。
可选的 SOAP Header 元素可包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)。
如果 Header 元素被提供,则它必须是 Envelope 元素的第一个子元素。

<?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:Header><m:Trans xmlns:m="http://www.w3schools.com/transaction/"soap:mustUnderstand="1">234</m:Trans>
</soap:Header>
...
...
</soap:Envelope> 

上面的例子包含了一个带有一个 “Trans” 元素的头部,它的值是 234,此元素的 “mustUnderstand” 属性的值是 “1”。
SOAP 在默认的命名空间中 (“http://www.w3.org/2001/12/soap-envelope“) 定义了三个属性。
这三个属性是:actor、 mustUnderstand 以及 encodingStyle。这些被定义在 SOAP 头部的属性可定义容器如何对 SOAP 消息进行处理。
mustUnderstand 属性
SOAP 的 mustUnderstand 属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。
假如您向 Header 元素的某个子元素添加了 “mustUnderstand=”1”,则它可指示处理此头部的接收者必须认可此元素。假如此接收者无法认可此元素,则在处理此头部时必须失效。
actor 属性
通过沿着消息路径经过不同的端点,SOAP 消息可从某个发送者传播到某个接收者。并非 SOAP 消息的所有部分均打算传送到 SOAP 消息的最终端点,不过,另一个方面,也许打算传送给消息路径上的一个或多个端点。
SOAP 的 actor 属性可被用于将 Header 元素寻址到一个特定的端点。

<?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:Header><m:Trans xmlns:m="http://www.w3schools.com/transaction/"soap:actor="http://www.w3schools.com/appml/">234</m:Trans>
</soap:Header>
...
...
</soap:Envelope> 

SOAP Body 元素
必需的 SOAP Body 元素可包含打算传送到消息最终端点的实际 SOAP 消息。

<?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><m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices"><m:Price>1.90</m:Price></m:GetPriceResponse>
</soap:Body></soap:Envelope> 

SOAP Fault 元素用于存留 SOAP 消息的错误和状态信息。
可选的 SOAP Fault 元素用于指示错误消息。
如果已提供了 Fault 元素,则它必须是 Body 元素的子元素。在一条 SOAP 消息中,Fault 元素只能出现一次。
SOAP 的 Fault 元素拥有下列子元素:
<faultcode>供识别故障的代码
<faultstring>可供人阅读的有关故障的说明
<faultactor>有关是谁引发故障的信息
<detail>存留涉及 Body 元素的应用程序专用错误信息
SOAP Fault 代码
在下面定义的 faultcode 值必须用于描述错误时的 faultcode 元素中:
错误:描述
VersionMismatch: SOAP Envelope 元素的无效命名空间被发现
MustUnderstand :Header 元素的一个直接子元素(带有设置为 “1” 的 mustUnderstand 属性)无法被理解。
Client : 消息被不正确地构成,或包含了不正确的信息。
Server:服务器有问题,因此无法处理进行下

HTTP 协议
HTTP 在 TCP/IP 之上进行通信。HTTP 客户机使用 TCP 连接到 HTTP 服务器。在建立连接之后,客户机可向服务器发送 HTTP 请求消息:

POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200

随后服务器会处理此请求,然后向客户机发送一个 HTTP 响应。此响应包含了可指示请求状态的状态代码:

200 OK
Content-Type: text/plain
Content-Length: 200

在上面的例子中,服务器返回了一个 200 的状态代码。这是 HTTP 的标准成功代码。
假如服务器无法对请求进行解码,它可能会返回类似这样的信息:“`

400 Bad Request
Content-Length: 0 

SOAP HTTP Binding
SOAP 方法指的是遵守 SOAP 编码规则的 HTTP 请求/响应。
HTTP + XML = SOAP
SOAP 请求可能是 HTTP POST 或 HTTP GET 请求。
HTTP POST 请求规定至少两个 HTTP 头:Content-Type 和 Content-Length。
Content-Type
SOAP 的请求和响应的 Content-Type 头可定义消息的 MIME 类型,以及用于请求或响应的 XML 主体的字符编码(可选)。

Content-Type: MIMEType; charset=character-encoding

SOAP 的请求和响应的 Content-Length 头规定请求或响应主体的字节数。
实例

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

soap相关元素的介绍相关推荐

  1. css中 盒模型的属性包括(),css的盒子模型属性有哪些?css盒子模型相关属性的介绍...

    本篇文章给大家带来的内容是关于css的盒子模型属性有哪些?css盒子模型相关属性的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.盒子模型图 2.一个简单的盒子模型 box. ...

  2. 了解下SOAP Envelope 元素

    SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换.或者更简单地说:SOAP 是用于访问网络服务的协议.强制使用的 SOAP 的 Envelope 元素是 SOAP 消息 ...

  3. 了解下SOAP Header 元素

    SOAP 是基于 XML 的简易协议,可使应用程序在 HTTP 之上进行信息交换.可选的 SOAP Header 元素包含头部信息. SOAP Header 元素 可选的 SOAP Header 元素 ...

  4. QML中MouseArea元素的介绍

    原文:http://www.thisisqt.com/?action-viewnews-itemid-22 MouseArea元素的一个很典型的用法是和一个可视的item一起用,处理这个item的鼠标 ...

  5. java中的jsonjar_java中使用json之相关jar包介绍

    1.JSON产生的背景 Web开发过程中,在客户端与服务器之间离不开数据的交互,这就需要规定交互数据的相关格式,通常来说都是使用JSON来传递数据. 2.JSON对象以及JSON字符串 JSON对象和 ...

  6. 共享一PYTHON 相关应用领域的介绍资料

    无意思 搜索到[PYTHON 相关应用领域的介绍资料]资料列表 ,感觉非常好,这里共享: http://woodpecker4org.b0.upaiyun.com/pyconcn/pycon2012c ...

  7. 列表相关元素及其属性

    HTML5保留了如下几个列表相关元素:无序列表<ul>.有序列表<ol>.自定义列表<dl> 1.<ul>:定义无序列表,可以指定id.style.cl ...

  8. SD/MMC相关寄存器的介绍

    1.SD卡内部架构 在熟悉SD/MMC相关寄存器之前,我们先来看看SD卡的内部架构是怎么样的,如下图所示: 2.SD/MMC相关寄存器的介绍 从上图中总结出:SD卡内部有7个寄存器. 一.OCR,CI ...

  9. 项目管理相关认证简要介绍(1)- 体系

    项目管理相关认证简要介绍 工作时间长了,带一些新人项目经理,总是有人问"考个软考怎么样?","有没有什么好的培训认证?","怎么才能尽快掌握项目管理? ...

最新文章

  1. CSV XLS文件区别
  2. 14.Python抠图脚本
  3. BGP community
  4. VMD_test matlab仿真
  5. 源代码文档生成 Doxygen介绍(转载)
  6. 前端也要懂Http缓存机制
  7. Ext grid 根据行号获取行数据
  8. java方法的参数类型_Java 基础 14 方法的重载 与 方法参数类型详解
  9. mysql not in优化_98%的人不知道的MySQL优化器原理
  10. java邮箱正则表达式_Java正则表达式详解
  11. 走进C++程序世界-----函数相关(全局变量)
  12. [Hadoop]Sqoop 1.4.2中文文档(二)之数据导出
  13. C语言软盘,如何使用编程的方法--创建1.44兆软盘镜像的几种方法。。。(之一 C语言法)...
  14. Arcmap计算土方量教程
  15. C# 人民币大写金额转换
  16. 一篇博客带你入门shiro
  17. 微信亲戚备注分组名称_微信隐藏小技巧,1分钟批量分组精准好友
  18. c语言数字转换为字符串补位,String字符串补位
  19. 【Matlab】蒙特卡罗法模拟圆周率+对应解析的GIF生成【超详细的注释和解释】
  20. 又要数数小绵羊(四刷) kkmd66

热门文章

  1. String、StringBuffer 和StringBuilder
  2. 【汇编程序】实现判断输入字母大小写
  3. 盖茨今日正式辞职 14位科技界名流临别赠言
  4. 帝国CMS备份出现数据恢复不完整的问题
  5. VR模式全景图的实现看这一篇就够了
  6. ES10:Object.fromEntries()、String.prototype.trim()、Array.prototype.flat()、Array.prototype.flatMap()
  7. 设计模式-迭代器模式
  8. 金融类APP常见被拒绝原因分析及解决
  9. 什么是流利语法Fluent Syntax
  10. 那些你不知道的PS大片摄影