Mule SoapKit 重定向到错误的操作
Mule SoapKit Redirecting to wrong operation
我正在使用 Soap Router 配置我的流程,并且能够在 SoapUI 中进行良好的测试。
但是,当在 postman 中使用相同的请求且请求类型为 post 时,无论输入如何,它都会进入第一个流程。是我准备的 WSDL 有误还是我在 mule 中的实现有误?
我的 WSDL :(此 WSDL 是使用 JAX WS 注释创建的)
EmpProg.wsdl
我从 wsdl 生成的 mule 流
<http:listener-config name="api-httpListenerConfig" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<apikit-soap:config name="/EmpProgApiImplService/EmpProgApiImplPort/api-config" wsdlUrl="empprogapiimpl.wsdl" serviceName="EmpProgApiImplService" portName="EmpProgApiImplPort" doc:name="APIkit SOAP: Configuration"/>
<flow name="api-main">
<http:listener path="/EmpProgApiImplService/EmpProgApiImplPort" config-ref="api-httpListenerConfig" doc:name="/EmpProgApiImplService/EmpProgApiImplPort" />
<apikit-soap:router config-ref="/EmpProgApiImplService/EmpProgApiImplPort/api-config" doc:name="SOAP Router"/>
</flow>
<flow name="tagEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config">
<set-payload value="<soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><faultcode>soap:Server</faultcode><faultstring>Operation [tagEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config] not implemented</faultstring></soap:Fault>" doc:name="Set Payload"/>
</flow>
<flow name="startEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config">
<set-payload value="<soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><faultcode>soap:Server</faultcode><faultstring>Operation [startEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config] not implemented</faultstring></soap:Fault>" doc:name="Set Payload"/>
</flow>
<flow name="stopEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config">
<set-payload value="<soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><faultcode>soap:Server</faultcode><faultstring>Operation [stopEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config] not implemented</faultstring></soap:Fault>" doc:name="Set Payload"/>
</flow>
当我在 postman 中放置任何请求时,它会转到 tagEmp 流程,但是当通过 soap-ui 尝试时,它工作正常并转到其各自的流程。
不确定可能是什么问题。
通过在 header 中添加 SoapAction 并将其值作为操作名称来解决问题。
然后,当从 Postman 尝试时,它正在执行自己的操作。
我正在使用 Soap Router 配置我的流程,并且能够在 SoapUI 中进行良好的测试。 但是,当在 postman 中使用相同的请求且请求类型为 post 时,无论输入如何,它都会进入第一个流程。是我准备的 WSDL 有误还是我在 mule 中的实现有误?
我的 WSDL :(此 WSDL 是使用 JAX WS 注释创建的) EmpProg.wsdl
我从 wsdl 生成的 mule 流
<http:listener-config name="api-httpListenerConfig" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/>
<apikit-soap:config name="/EmpProgApiImplService/EmpProgApiImplPort/api-config" wsdlUrl="empprogapiimpl.wsdl" serviceName="EmpProgApiImplService" portName="EmpProgApiImplPort" doc:name="APIkit SOAP: Configuration"/>
<flow name="api-main">
<http:listener path="/EmpProgApiImplService/EmpProgApiImplPort" config-ref="api-httpListenerConfig" doc:name="/EmpProgApiImplService/EmpProgApiImplPort" />
<apikit-soap:router config-ref="/EmpProgApiImplService/EmpProgApiImplPort/api-config" doc:name="SOAP Router"/>
</flow>
<flow name="tagEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config">
<set-payload value="<soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><faultcode>soap:Server</faultcode><faultstring>Operation [tagEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config] not implemented</faultstring></soap:Fault>" doc:name="Set Payload"/>
</flow>
<flow name="startEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config">
<set-payload value="<soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><faultcode>soap:Server</faultcode><faultstring>Operation [startEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config] not implemented</faultstring></soap:Fault>" doc:name="Set Payload"/>
</flow>
<flow name="stopEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config">
<set-payload value="<soap:Fault xmlns:soap="http://www.w3.org/2003/05/soap-envelope"><faultcode>soap:Server</faultcode><faultstring>Operation [stopEmp:/EmpProgApiImplService/EmpProgApiImplPort/api-config] not implemented</faultstring></soap:Fault>" doc:name="Set Payload"/>
</flow>
当我在 postman 中放置任何请求时,它会转到 tagEmp 流程,但是当通过 soap-ui 尝试时,它工作正常并转到其各自的流程。 不确定可能是什么问题。
通过在 header 中添加 SoapAction 并将其值作为操作名称来解决问题。 然后,当从 Postman 尝试时,它正在执行自己的操作。