1. SOAP 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。

  简单的说:SOAP是用于访问网络服务的协议。

2. 什么是SOAP

  • SOAP 指简易对象访问协议
  • SOAP 是一种通信协议
  • SOAP 用于应用程序之间的通信
  • SOAP 是一种用于发送消息的格式
  • SOAP 被设计用来通过因特网进行通信
  • SOAP 独立于平台
  • SOAP 独立于语言
  • SOAP 基于 XML
  • SOAP 很简单并可扩展
  • SOAP 允许您绕过防火墙
  • SOAP 将被作为 W3C 标准来发展

3. SOAP 构建模块

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

  • 必需的 Envelope 元素,作用:把此 XML 文档标识为一条 SOAP 消息;SOAP消息的根元素;
  • 可选的 Header 元素,包含头部信息;包含有关 SOAP 消息的应用程序专用信息(比如认证、支付等)

    • 所有 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.w3school.com.cn/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:可被用于将 Header 元素寻址到一个特定的端点

        •   语法:soap:actor="URI"
      • mustUnderstand:用于标识   标题项     对于要对其进行处理的接收者来说是强制的(1)还是可选的(0);
        • "mustUnderstand="1"时,表示   处理此头部的接收者    必须认可此元素。假如此接收者无法认可此元素,则在处理此头部时必须失效。
      • encodingStyle:用于定义在文档中使用的数据类型
      •   这些被定义在 SOAP 头部的属性可定义容器如何对 SOAP 消息进行处理。
  • 必需的 Body 元素,包含所有的调用和响应信息:包含打算传送到消息最终端点的实际 SOAP 消息。

    • SOAP Body 元素的直接子元素可以是合格的命名空间。SOAP 在默认的命名空间中("http://www.w3.org/2001/12/soap-envelope")定义了 Body 元素内部的一个元素。即 SOAP 的 Fault 元素,用于指示错误消息。
  • 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息  

    •   它必须是 Body 元素的子元素。
    • 在一条 SOAP 消息中,Fault 元素只能出现一次。

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

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

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

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

4.SOAP 语法规则

  这里是一些重要的语法规则:

  • SOAP 消息必须用 XML 来编码
  • SOAP 消息必须使用 SOAP Envelope 命名空间
  • SOAP 消息必须使用 SOAP Encoding 命名空间
  • SOAP 消息不能包含 DTD 引用
  • SOAP 消息不能包含 XML 处理指令

  SOAP消息的基本结构:<?xml version="1.0"?>

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"  //必须,把 XML 文档定义为 SOAP 消息
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">//必须,它可把封装定义为 SOAP 封装:
//SOAP 的 encodingStyle 属性用于定义在文档中使用的数据类型; <soap:Header>
...
...
</soap:Header> <soap:Body>
...
...
<soap:Fault>
...
...
</soap:Fault>
</soap:Body> </soap:Envelope>

5.  SOAP 方法指的是遵守 SOAP 编码规则的 HTTP 请求/响应。

  SOAP 请求可能是 HTTP POST 或 HTTP GET 请求。

  HTTP POST 请求规定至少两个 HTTP 头:Content-Type 和 Content-Length。

  举例:

  

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>

soap-学习的更多相关文章

  1. Web Services之SOAP学习

    Web Services之SOAP [toc] 什么是SOAP SOAP(Simple Object Access Protocol)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一 ...

  2. webservice 学习笔记 1

    Webservice----------->跨语言服务调用 (视频学习总结) 1-1.有OA系统 需要添加一个功能,登录之后显示天气情况 此时可以使用Webservice eg1: 气象局自己有 ...

  3. Web Service学习笔记(webservice、soap、wsdl、jws详细分析)

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  4. Web Service学习笔记(webservice、soap、wsdl、jws详细分析) (转)

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  5. 【接口测试】【SOAP】简单的接口测试学习

    ==================================================================================================== ...

  6. 关于wcf,webservice,webapi或者其他服务或者接口有什么区别 WCF、WebAPI、WebService之间的区别 【转载】HTTP和SOAP完全就是两个不同的协议 WebService学习总结(一)——WebService的相关概念

    wcf,webservice采用的是rpc协议,这个协议很复杂,所以每次要传递.要校验的内容也很复杂,别看我们用的很简单,但实际是frame帮我们做掉了rpc生成.解析的事情webapi遵循是rest ...

  7. 【转】 Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常

    目录(?)[-] SOAP JSON和XMLPullParser Exception处理 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog. ...

  8. 学习 WebService 第三步:一个简单的实例(RAD+WAS 8.5开发SOAP项目)

    [开发环境] Web Service 服务器端开发工具:RAD(Eclipse内核) Web Service 服务器:IBM WebSphere v8.5 REST/SOAP:SOAP(JAX-WS/ ...

  9. SoapUI学习之SOAP和REST的区别

    一.Soap和Rest的定义 SOAP(Simple Object Access Protocol 简单对象访问协议),用于在Web Service中把远程调用和返回封装成机器可读的格式化数据,事实上 ...

  10. salesforce 零基础学习(五十五)java通过SOAP方式定时访问某个文件然后插入到sObject中

    项目源码:https://github.com/zhangyueqidlmu/SOAP-Access-SFDC.git 项目背景:salesforce端相关数据需要其他系统提供,其他系统可以提供相关数 ...

随机推荐

  1. java-增强for循环

    public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); lis ...

  2. 一个大div里面包裹一个小div,里面的小div的点击事件不触发外面的这个大div的点击事件

    一开始上html代码 <div id="div1" style="background: blue;width: 100px; height: 100px;&quo ...

  3. hdu 1044(bfs+dfs+剪枝)

    Collect More Jewels Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Othe ...

  4. python调用.so

    python调用动态链接库的基本过程 动态链接库在Windows中为.dll文件,在linux中为.so文件.以linux平台为例说明python调用.so文件的使用方法. 本例中默认读者已经掌握动态 ...

  5. AC日记——[HNOI2008]GT考试 bzoj 1009

    1009 思路: KMP上走DP(矩阵加速): DP[i][j]表示当前在第i位,同是匹配到不吉利串的第j位的方案数: 代码: #include <bits/stdc++.h> using ...

  6. SQL Error: 1064, SQLState: 42000

    这个错误是因为mysql有些关键字被我们用了,需要更改关键字成其他名字 ADD ALL ALTER ANALYZE AND AS ASC ASENSITIVE BEFORE BETWEEN BIGIN ...

  7. OpenStack 计算服务 Nova介绍和控制节点部署 (八)

    一)nova在keystone上服务注册 1.1创建nova务实体 [root@controller ~]# source admin-openrc [root@controller ~]# open ...

  8. VS2015运行 cordova 时候提示无法运行解决

    出现此问题的原因是在于npm程序损坏了.vs调用的npm程序并不是在node安装目录下的npm,而是在: C:\Users\用户名\AppData\Roaming\Microsoft\VisualSt ...

  9. 配置文件报错:元素类型 "XXX" 必须后跟属性规范 ">" 或 "/>"

    这是一个比较常见的配置错误,一般分两步. 有的情况的确是xml文件出现了语法问题,可以让IDE来帮我们检查xml文件是否真的出现了语法错误.把xml内容复制进IDE中,让IDE帮我们检查错误. 如上图 ...

  10. 图论&双连通分量&强联通分量&2-SAT

    图论入门费: 数据小,大胆的写 https://vjudge.net/problem/UVA-10047 入门费 https://vjudge.net/problem/UVA-11624 思维,建图异 ...