SOAP Action揭密

本文探讨了SOAP Action在SOAP 1.1规范中的作用,解释了它如何用于标识HTTP SOAP请求的目的地,并通过实例说明了在没有明确指定服务方法名的情况下的重要性。在SOAP 1.2中,SOAPAction被"action"取代,但其核心功能保持不变。在实际应用如Tibco BW中,正确设置SOAP Action对于服务调用至关重要。

最近在工作中遇到一个SOAP Action的问题,正好拿出来研究一把。

据说SOAPAction header这玩意在SOAP 1.1规范中着实让不少开发者喝了一壶。真的有这么难理解么?我想这应该是因为SOAP有两种非常不同的使用方式,而SOAPAction主要是被用来支持其中应用较少的一种方式的原因。在我看来,这种方式也非常有价值。

让我们先看看SOAP 1.1规范是怎么定义HTTP SOAPAction header的:

SOAPAction HTTP request header被用来标识SOAP HTTP请求的目的地,其值是个URI地址。SOAP发送并不限制格式、URI特征或其必须可解析,那么在这种情况下,发送一个HTTP SOAP请求时,其HTTP客户端必须使用/指明SOAPAction HTTP request header。

SOAPAction header的内容可以被用在服务端,诸如:防火墙适当的过滤基于HTTP的SOAP请求消息等场景。SOAPAction header的值为空串("")表示SOAP消息的目的地由HTTP请求的URI标识;无值则表示没有指定这条消息的目的地

看了官方的定义,相信大家也迷糊了,迷糊在“目的地”这个词上吧?那么,给它一个准确的说法吧——“确定执行某一行为的路径”。

看一个SOAP消息的例子:

<SOAP-ENV:Envelope
  
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  SOAP-ENV:encodingStyle
="http://schemas.xmlsoap.org/soap/encoding/">
   
<SOAP-ENV:Body>
       
<m:GetLastTradePrice xmlns:m="Some-URI">
           
<symbol>XYS</symbol>
       
</m:GetLastTradePrice>
   
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

很明显的,这条消息指明了要去执行服务端的“GetLastTradePrice”这个方法,开发者不会对此没有疑问,这样看来,SOAP Action也许显得多余了?

然而,在另一种SOAP消息的发送场景中,却少不了SOAP Action。在这种场景中,SOAP消息并没有显示的指定要调用的服务方法名,而是利用底层的传输协议发送(这样的话,一般会被Web services忽视),例如使用HTTP的Post方式发送的SOAP消息。

拿AWT组件容器来举个例子吧,我们知道有很多AWT容器,例如:Panel,Box,Window等等,很多情况下,开发者知道他们创建的泛型容器对象下真正是什么对象。那么,假设下面两段代码里的java.awt.Container对象其实是一个Box吧:

1.

comp = new TextField( "test" );
java.awt.Container c 
= Foo.bar();
c.add( comp );

2.

comp = new TextField( "test" );
java.awt.Container c 
= Foo.bar();
((java.awt.Panel)c).add( comp );

以上两段代码产生两种不同的结果。“add()”方法对两者似乎有着相同的意义,但是在代码2中其被扩展为“作为一个Panel对象去add”。所以很明显的,代码2会抛出一个异常,因为我们知道这个对象实际上是Box,而我们的代码期待的是Panel。

HTTP POST的意义正如这个例子中的“add()”方法一样,HTTP POST提供一个关于SOAPAction如何被使用的索引;而SOAPAction header的值则应该被用来指明这个“扩展”的目的地——这条SOAP/HTTP消息发送者所期待的处理容器的名称(可以这样理解:即相应的API方法)。那么,正如上面那个AWT例子一样,如果这种期待没有被满足,就会产生一个错误。

注意:在SOAP 1.2规范中,SOAPAction header这个属性被"action"所取代,但其作用和工作原理都没有变化。

有意思的是,在Tibco的EAI工具BW中,使用SOAP服务端活动必须指定SOAP Action属性,如果引用的原始WSDL没有使用这个属性的话,也必须显示的指明;因此,相应的,其客户端也要注意啦——必须为SOAP Action属性填入期待的URI。OK

内容概要:本文围绕三相并网逆变器的控制策略展开研究,重点探讨了虚拟阻抗与统一有源阻尼相结合的控制方法,并实现了SVPWM(空间矢量脉宽调制)与SPWM(正弦脉宽调制)两种调制方式在Simulink平台下的仿真建模。通过引入虚拟阻抗改善系统输出阻抗特性,结合统一有源阻尼技术有效抑制LC或LCL滤波器引起的谐振问题,从而提升逆变器在弱电网条件下的并网稳定性与电能质量。研究涵盖了控制策略的设计、调制算法的实现、动态响应分析及谐波抑制效果评估,同时拓展涉及正负序分离、中点电位平衡、DPWMA调制等关键技术,构建了完整的高性能并网逆变器控制系统仿真体系。; 适合人群:适用于从事电力电子、新能源发电、智能电网及相关领域的研究生、科研人员和工程技术人员,特别是具备三相并网逆变器控制理论基础并熟悉MATLAB/Simulink仿真环境的专业人士;; 使用场景及目标:①用于高校与科研机构开展并网逆变器稳定性与控制策略的深入研究;②支撑学位论文撰写、学术期刊投稿或科研项目申报中的仿真验证工作;③为企业研发高性能、高可靠性的并网逆变器产品提供先进的控制方案与技术原型支持;; 阅读建议:建议读者结合提供的Simulink模型文件进行实际操作与仿真验证,重点关注虚拟阻抗参数设计与有源阻尼的协同作用机制,深入理解不同调制策略对系统性能的影响,并可进一步拓展学习文中提及的正负序控制、中点电位平衡等先进控制技术,全面提升对复杂电网环境下并网系统稳定运行机制的认知水平。
内容概要:本文围绕基于近端梯度算法求解LASSO分位数回归的短期风电功率预测方法展开研究,旨在提升预测模型在复杂环境下的精度与鲁棒性。文章系统构建了LASSO分位数回归模型,深入剖析其数学原理,并引入近端梯度算法进行高效优化求解,有效应对高维稀疏数据与异常值干扰等问题。通过Matlab平台完成了完整的算法实现与仿真实验,利用实际风电数据验证了该方法在不同分位点下的预测性能,结果表明其相较于传统方法具有更强的稳定性和准确性。此外,文档还整合了电力系统、机器学习、路径规划等多个领域的相关科研方向与技术应用案例,突出该方法在新能源预测与智能优化中的广泛适用性与实践价值。; 适合人群:具备扎实的数学基础(如凸优化、统计学习)与Matlab编程能力,从事新能源发电预测、电力系统调度、智能优化算法或机器学习等领域的科研人员、工程技术人员及研究生。; 使用场景及目标:①应用于短期风电功率预测,增强模型对噪声、异常值及非平稳特性的适应能力,提升电网调度的安全性与经济性;②为研究LASSO回归、分位数回归及近端梯度优化算法的学者提供可复现、可扩展的Matlab代码实例,便于算法改进与对比实验;③作为可再生能源消纳、电力市场出清、微网能量管理等工程场景下的核心数据分析与决策支持工具。; 阅读建议:此资源以算法实现为核心,建议读者在掌握LASSO与分位数回归理论基础上,结合Matlab代码逐行分析近端梯度算法的迭代流程与收敛特性,重点关注正则化项与损失函数的权衡机制。同时可借鉴文中丰富的科研案例,拓展至光伏预测、负荷预测等相似应用场景,注重理论推导、代码实现与实验验证的深度融合。
内容概要:本文围绕铰接式重型车辆的稳健路径跟踪控制问题,提出并实现了基于H∞控制器与鲁棒线性二次调节器(RLQR)的控制策略。通过建立车辆动力学模型,针对系统中存在的外部干扰与参数不确定性,设计H∞控制器以增强系统的抗干扰能力,并结合RLQR优化控制性能,在保证稳定性的同时提升路径跟踪精度。研究利用Matlab进行仿真验证,对比不同工况下的控制效果,展示了所提方法在复杂行驶环境下的优越性与鲁棒性。; 适合人群:具备自动控制理论基础、车辆工程或自动化相关背景,熟悉Matlab/Simulink仿真工具,从事智能车辆控制、路径跟踪算法研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于铰接式重型车辆(如矿用卡车、大型拖挂车)的自动驾驶路径跟踪控制系统设计;②为解决存在模型不确定性和外界扰动条件下的鲁棒控制问题提供算法参考与实现范例;③服务于高校科研项目、毕业论文或工业界智能运输系统的技术开发。; 阅读建议:此资源以Matlab代码为核心支撑,建议读者在学习过程中结合控制理论基础知识,运行并调试所提供的仿真程序,深入理解H∞与RLQR控制器的设计流程与参数整定方法,同时可通过修改模型参数或引入新的扰动场景进行拓展性实验,以增强实际应用能力。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值