20150827 Created By BaoXinjian
一、摘要
- 什么是 SOAP?
SOAP 指简易对象访问协议
SOAP 是一种通信协议
SOAP 用于应用程序之间的通信
SOAP 是一种用于发送音讯的格式
SOAP 被规划用来通过因特网举办通信
SOAP 独立于阳台
SOAP 独立于言语
SOAP 基于 XML
SOAP 很粗略并可扩张
SOAP 允许你绕过防火墙
SOAP 将被视作 W3C 标准来升高
- Why SOAP?
对此应用程序开发来说,使程序之间开展因特网通信是很主要的。
现阶段的应用程序通过拔取远程进度调用(RPC)在比如
DCOM 与 CORBA 等目标之间开展通信,可是 HTTP 不是为此设计的。RPC
会爆发包容性以及安全问题;防火墙和代理服务器平常会堵住此类流量。
通过 HTTP
在应用程序间通信是更好的法门,因为 HTTP
得到了拥有的因特网浏览器及服务器的帮助,SOAP
就是被创立出来完结那个任务的。
SOAP
提供了一种标准的方法,使得运行在不一致的操作系统并使用区其他技能和编程语言的应用程序可以互相开展通信。
二、语法结构
- SOAP 构建模块
一条 SOAP 新闻就是一个平时的 XML
文档,包括下列元素:
须要的 Envelope 元素,可把此 XML
文档标识为一条 SOAP 消息
可选的 Header 元素,包罗头部音信
必要的 Body
元素,包括所有的调用和响应音信
可选的 Fault
元素,提供有关在拍卖此音讯所暴发错误的音信
- 语法规则
此地是有些紧要的语法规则:
SOAP 音信必须用 XML 来编码
SOAP 信息必须采取 SOAP Envelope
命名空间
SOAP 音信必须选拔 SOAP Encoding
命名空间
SOAP 新闻不可以包涵 DTD 引用
SOAP 音讯不可能蕴含 XML 处理指令
3. 一个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>
三、实际案例
通过SopUI调用程序Oracle
Erp发表的WSDL的SOAP新闻格式
<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>
Thanks and Regards
参考:W3Scholl –
http://www.w3school.com.cn/soap/soap\_intro.asp