IREP_SOA Integration SOAP概述(概念)
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
技术交流,技术讨论,欢迎加入
Technology Blog Created By Oracle ERP - 鲍新建
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?