Soap WSO2 ESB保留有效负载消息
我有下面的代理服务,它正在被代理服务调用Soap WSO2 ESB保留有效负载消息,soap,wso2esb,Soap,Wso2esb,我有下面的代理服务,它正在被代理服务调用 <?xml version="1.0" encoding="UTF-8"?> <sequence name="seq_invchk_slpa_in" trace="disable" xmlns="http://ws.apache.org/ns/synapse"> <log level="custom"> <property name="STATUS::" value="****************
<?xml version="1.0" encoding="UTF-8"?>
<sequence name="seq_invchk_slpa_in" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<log level="custom">
<property name="STATUS::" value="***************************"/>
</log>
<payloadFactory media-type="xml">
<format>
<soapenv:Envelope xmlns:hnb="http://10.104.74.93/hnb"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header/>
<soapenv:Body>
<hnb:CheckInvoiceDetails soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<invoice_no xsi:type="xsd:string">$1</invoice_no>
</hnb:CheckInvoiceDetails>
</soapenv:Body>
</soapenv:Envelope>
</format>
<args>
<arg evaluator="xml" expression="$ctx:invoice_no"/>
</args>
</payloadFactory>
<property name="ContentType" scope="axis2" type="STRING" value="text/xml"/>
<header name="Action" scope="default" value="CheckInvoiceDetails"/>
<property name="SOAPAction" scope="transport" type="STRING" value="CheckInvoiceDetails"/>
<send>
<endpoint key="gov:INVCHK/SLPA/endpoints/invchk_slpa_validation_ep.xml"/>
</send>
</sequence>
$1
从工具(soapui)调用时,服务工作没有任何问题
但是当从系统调用时,会出现一个问题。到目前为止我所追踪到的
在正确的呼叫过程中,有效负载工厂消息是否按以下方式发送:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hnb="http://10.104.74.93/hnb" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<hnb:CheckInvoiceDetails soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<invoice_no xmlns="http://ws.apache.org/ns/synapse" xsi:type="xsd:string">17231374967185</invoice_no>
</hnb:CheckInvoiceDetails>
</soapenv:Body>
</soapenv:Envelope>
17231374967185
当发出错误的调用时,有效负载消息将作为
<?xml version="1.0" encoding="UTF-8"?>
<hnb:CheckInvoiceDetails xmlns:hnb="http://10.104.74.93/hnb" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<invoice_no xmlns="http://ws.apache.org/ns/synapse" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:string">17231374967185</invoice_no>
</hnb:CheckInvoiceDetails>
17231374967185
我认为这是问题的根源。在错误调用期间,我从客户端得到的响应是
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap .org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode xsi:type="xsd:string">SOAP-ENV:Client</faultcode>
<faultstring xsi:type="xsd:string">Operation '' is not defined in the WSDL for this service</faultstring>
<detail xsi:type="xsd:string" />
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
SOAP-ENV:客户端
此服务的WSDL中未定义操作“”
如何保持SOAP消息的原样,并在被系统调用时将其发送出去
为什么soap名称空间在应用程序中会混淆
方法级
任何帮助都将不胜感激。您至少必须将负载工厂中介的内容更改为
<payloadFactory media-type="xml">
<format>
<hnb:CheckInvoiceDetails xmlns:hnb="http://10.104.74.93/hnb">
<hnb:invoice_no xsi:type="xsd:string">$1</hnb:invoice_no>
</hnb:CheckInvoiceDetails>
</format>
<args>
<arg evaluator="xml" expression="$ctx:invoice_no"/>
</args>
</payloadFactory>
$1
注意没有标签的发票。最初不清楚它应该有什么名称空间,默认情况下,它实际上嵌套了synapse引擎的名称空间。所以最好显式地分配名称空间
默认情况下,Synapse引擎将添加信封
如果消息类型未知,则返回soap12。可在Synapse文档中找到。
没有messageType的属性内容类型无效 保存在属性中。然后在需要时使用enrich进行恢复。感谢您的评论,但在发送消息时发生了更改,这就是问题所在,是否有任何关于添加soap名称空间的线索?PayloadFactory mediator旨在更改消息正文的内容。为什么有信封、页眉和正文标签。WSOESB将在通过传输传输传输消息之前将信封添加到消息本身。默认情况下,synapse引擎将添加SOAP 1.2头,如果我需要1.1头,如何显式添加它们?我现在没有机会检查它。但我记得当您在ESB上的服务的SOAPUI中创建SOAP项目时,您将获得服务的2个副本。一个在soap1.1上工作,另一个在soap1.2Let上工作,比如说服务名称SampleProxy,那么您将获得每个端点的2个副本,每个端点都是您为服务分配的传输类型。对于soap u,请尝试使用正确的地址“如果消息类型未知,则返回soap12。可在Synapse文档中找到。没有消息类型的属性内容类型无效。”,这是绝对正确的,有助于克服此问题,非常感谢您的时间:)