SOAP 是一模一样栽通信协议。通过 HTTP 在应用程序间通信是重好的方。

20150827 Created By BaoXinjian

实例

<?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>

必备的 Envelope 元素,可管此 XML
文档标识也平长长的 SOAP 消息

什么是 SOAP?

  • SOAP 指简对象看协议
  • SOAP 是一种通信协议
  • SOAP 用于应用程序之间的通信
  • SOAP 是一样种用于出殡信息的格式
  • SOAP 被设计用来通过因特网进行通信
  • SOAP 单独于阳台
  • SOAP 独立为言语
  • SOAP 基于 XML
  • SOAP 特别简单并不过扩大
  • SOAP 允许您绕了防火墙
  • SOAP 将吃看做 W3C 标准来发展

SOAP 允许而绕了防火墙

例子

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

SOAP 基于 XML

实例

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

...
...

</soap:Envelope>

这边是一些重中之重之语法规则:

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
                  xmlns:orac="http://xmlns.oracle.com/apps/bxj/soaprovider/plsql/oraclebxj_emp_pkg/" 
                  xmlns:cre="http://xmlns.oracle.com/apps/bxj/soaprovider/plsql/oraclebxj_emp_pkg/create_employee/">
   <soapenv:Header>
      <orac:SOAHeader>
         <!--Optional:-->
         <orac:Responsibility>APPLICATION_DEVELOPER</orac:Responsibility>
         <!--Optional:-->
         <orac:ResponsibilityAppl>FND</orac:ResponsibilityAppl>
         <!--Optional:-->
         <orac:SecurityGroup>STANDARD</orac:SecurityGroup>
         <!--Optional:-->
         <orac:NLSLanguage>AMERICAN</orac:NLSLanguage>
      </orac:SOAHeader>
   </soapenv:Header>
   <soapenv:Body>
      <cre:InputParameters>
         <!--Optional:-->
         <cre:P_EMPNO>1</cre:P_EMPNO>
         <!--Optional:-->
         <cre:P_ENAME>2</cre:P_ENAME>
         <!--Optional:-->
         <cre:P_JOB>3</cre:P_JOB>
         <!--Optional:-->
         <cre:P_MGR>4</cre:P_MGR>
         <!--Optional:-->
         <cre:P_HIREDATE>SYSDATE</cre:P_HIREDATE>
         <!--Optional:-->
         <cre:P_SAL>5</cre:P_SAL>
         <!--Optional:-->
         <cre:P_COMM>6</cre:P_COMM>
         <!--Optional:-->
         <cre:P_DEPTNO>7</cre:P_DEPTNO>
      </cre:InputParameters>
   </soapenv:Body>
</soapenv:Envelope> 

语法

soap:actor="URI" 

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:Header>
  ...
  ...
</soap:Header>

<soap:Body>
  ...
  ...
  <soap:Fault>
    ...
    ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>

于应用程序开发来说,使程序中展开因特网通信是怪重大的。

语法

Content-Length: bytes 

SOAP 指简易对象看协议

语法

soap:mustUnderstand="0|1"
  1. 语法规则

Microsoft 和 SOAP

SOAP 是微软 .net 架构的重点要素,用于未来之因特网应用程序开发。

 

SOAP Fault 元素

可选的 SOAP Fault 元素用于指示错误信息。

倘若已经提供了 Fault 元素,则它要是 Body 元素的子元素。在平长长的 SOAP
消息备受,Fault 元素只能出现同不成。

SOAP 的 Fault 元素拥有下列子元素:

子元素 描述
<faultcode> 供识别故障的代码
<faultstring> 可供人阅读的有关故障的说明
<faultactor> 有关是谁引发故障的信息
<detail> 存留涉及 Body 元素的应用程序专用错误信息

3.  一个SOAP消息之语法构成

SOAP Body 元素

必要的 SOAP Body 元素可含蓄打算传送至信息最终端点的骨子里 SOAP 消息。

SOAP Body 元素的直接子元素可以是合格的命名空间。SOAP
在默认的命名空间中(“http://www.w3.org/2001/12/soap-envelope")定义了 Body
元素内部的一个元素。即 SOAP 的 Fault 元素,用于指示错误信息。

<?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:GetPrice xmlns:m="http://www.w3school.com.cn/prices">
      <m:Item>Apples</m:Item>
   </m:GetPrice>
</soap:Body>

</soap:Envelope>

方的例子请求苹果的价。请留心,上面的 m:GetPrice 和 Item
元素是应用程序专用的因素。它们并无是 SOAP 标准的一律有些。

如果一个 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.w3school.com.cn/prices">
      <m:Price>1.90</m:Price>
   </m:GetPriceResponse>
</soap:Body>

</soap:Envelope>

图片 1

SOAP Header 元素

但是挑选的 SOAP Header 元素可含蓄关于 SOAP
消息的应用程序专用信息(比如认证、支付相当于)。如果 Header
元素被提供,则它必须是 Envelope 元素的率先只子元素。

注:所有 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、 mustUnderstand 以及
encodingStyle。这些吃定义在 SOAP 头部的性能可定义容器如何对 SOAP
消息进行拍卖。

SOAP 是同一种用于发送信息的格式

例子

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

 

 

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

  1. SOAP 构建模块

语法规则

此处是部分重要之语法规则:

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

透过 HTTP
在应用程序间通信是双重好之道,因为 HTTP
得到了有的因特网浏览器与服务器的支撑,SOAP
就是给创造出就这任务之。

http://www.w3school.com.cn/soap/index.asp

SOAP
提供了一如既往种植标准的法子,使得运行在不同之操作系统并以不同的技艺及编程语言的应用程序可以相互开展通信。

SOAP Fault 代码

在脚定义的 faultcode 值必须用于描述不当时之 faultcode 元素中:

错误 描述
VersionMismatch SOAP Envelope 元素的无效命名空间被发现
MustUnderstand Header 元素的一个直接子元素(带有设置为 "1" 的 mustUnderstand 属性)无法被理解。
Client 消息被不正确地构成,或包含了不正确的信息。
Server 服务器有问题,因此无法处理进行下去。

 

 

Why SOAP?

对应用程序开发以来,使程序中进行因特网通信是雅关键之。

此时此刻的应用程序通过动用远程过程调用(RPC)在如 DCOM 与 CORBA
等目标之间展开通信,但是 HTTP 不是吗这个规划之。RPC
会产生兼容性及安全题材;防火墙和代理服务器通常会拦此类流量。

通过 HTTP 在应用程序间通信是再次好的章程,因为 HTTP
得到了有着的因特网浏览器和服务器的支持。SOAP
就是给创造出来就这个职责的。

SOAP
提供了相同种标准的不二法门,使得运行在不同的操作系统并利用不同之技术和编程语言的应用程序可以互相开展通信。

SOAP 独立于阳台

语法

Content-Type: MIMEType; charset=character-encoding 

图片 2老三、实际案例

actor 属性

经过沿着消息路径经过不同的端点,SOAP
消息而由有发送者传播到某个接收者。并非 SOAP 消息之有着片都打算传送到
SOAP
消息的尾声端点,不过,另一个面,也许打算传送给消息路径上之一个要多独端点。

SOAP 的 actor 属性可为用来将 Header 元素寻址到一个特定的端点。

参考:W3Scholl –
http://www.w3school.com.cn/soap/soap\_intro.asp

mustUnderstand 属性

SOAP 的 mustUnderstand
属性可用于标识标题项于要指向该展开处理的收信人来说是强制的或可选的。

万一你为 Header 元素的某部子元素添加了
“mustUnderstand=”1″,则它不过指示处理此首的接收者必须承认者因素。假如此接收者无法肯定这个因素,则在处理这个首时要失效。

图片 3一、摘要

Content-Type

SOAP 的请与应的 Content-Type 头可定义消息之 MIME
类型,以及用于请求或响应的 XML 主体的字符编码(可选)。

SOAP 消息必须采用 SOAP Envelope
命名空间

HTTP 协议

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

POST /item HTTP/1.1
Host: 189.123.345.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

必要的 Body
元素,包含有的调用和响应信息

SOAP HTTP Binding

SOAP 方法指的凡守 SOAP 编码规则的 HTTP 请求/响应。

HTTP + XML = SOAP

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

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

Thanks and Regards

Content-Length

SOAP 的请求和应的 Content-Length 头规定要或响应中心的字节数。

<?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>
  ...
  ...
</soap:Header>

<soap:Body>
  ...
  ...
  <soap:Fault>
    ...
    ...
  </soap:Fault>
</soap:Body>

</soap:Envelope>

SOAP 独立于言语

图片 4老二、语法结构

SOAP 消息不能够包含 DTD 引用

  1. Why SOAP?

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

SOAP 将吃作 W3C 标准来提高

SOAP 消息未可知包含 XML 处理指令

SOAP 被设计用来由此因特网进行通信

手上之应用程序通过运用远程过程调用(RPC)在像
DCOM 与 CORBA 等对象期间进行通信,但是 HTTP 不是啊这设计的。RPC
会产生兼容性及安全问题;防火墙和代理服务器通常会阻拦此类流量。

一如既往长 SOAP 消息就是是一个一般的 XML
文档,包含下列元素:


不过卜的 Header 元素,包含头部信息

  1. 什么是 SOAP?

SOAP 很简短并可扩大

SOAP 消息必须动 SOAP Encoding
命名空间

SOAP 消息必须用 XML 来编码

唯独挑选的 Fault
元素,提供有关以处理这消息所发生错误的信

透过SopUI调用程序Oracle
Erp发布的WSDL的SOAP消息格式


SOAP 是同一种通信协议

相关文章