我已经部署了一个工作良好的WSO2 ESB代理服务:它发送对数据集的请求,在代理服务的outSequence中,我在文件中发送响应(我设置了响应的序列),并且我还可以在SOAP UI中可视化响应(或在ESB的"尝试此服务"页面中)。
如果我设置一个计划任务它不工作:我设置消息(我的xml在SOAP UI正确工作的消息),injectTo(代理),proxyName(我的代理名称),format(我的格式)和SoapAction…
我确信SoapAction的名称是正确的,但是服务器的响应是"服务器SoapAction: xxxx无法识别HTTP报头值",其中xxxx是正确的soap操作名称。
这发生在另一个任务中,我尝试使用另一个更简单的代理服务,一切都是正确的,直到我在计划任务中使用代理服务。
我不明白。
您必须像这样添加"soapAction"头:
<property name="Code" value="1234"/>
<header name="soapAction" scope="transport" value="http://tempuri.org/MyService/GetAddress"/>
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:GetAddress>
<tem:Code>$1</tem:Code>
</tem:GetAddress>
</soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg evaluator="xml" expression="get-property('Code')"/>
</args>
</payloadFactory>
<send>
<endpoint>
<address format="soap11" uri="http://192.168.1.1/Services/ShakouriService.svc?wsdl"/>
</endpoint>
</send>
检查是否在insequence或outsequence中收到此错误。另外,当您发送响应返回时,您是使用<send/>
还是提供特定的端点。