20150827 Created By BaoXinjian
一、摘要
1. 什么是 SOAP?
SOAP 指简易对象访问协议
SOAP 是一种通信协议
SOAP 用于应用程序之间的通信
SOAP 是一种用于发送消息的格式
SOAP 被设计用来通过因特网进行通信
SOAP 独立于平台
SOAP 独立于语言
SOAP 基于 XML
SOAP 很简单并可扩展
SOAP 允许您绕过防火墙
SOAP 将被作为 W3C 标准来发展
2. Why SOAP?
对于应用程序开发来说,使程序之间进行因特网通信是很重要的。
目前的应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 HTTP 不是为此设计的。RPC 会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。
通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持,SOAP 就是被创造出来完成这个任务的。
SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。
二、语法结构
1. SOAP 构建模块
一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
可选的 Header 元素,包含头部信息
必需的 Body 元素,包含所有的调用和响应信息
可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
2. 语法规则
这里是一些重要的语法规则:
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
ERP技术讨论群: 288307890
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建