Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WSO2 ESB—自动添加的soap信封正在引发问题_Soap_Proxy_Wso2_Esb_Envelope - Fatal编程技术网

WSO2 ESB—自动添加的soap信封正在引发问题

WSO2 ESB—自动添加的soap信封正在引发问题,soap,proxy,wso2,esb,envelope,Soap,Proxy,Wso2,Esb,Envelope,我正在探索WSO2 ESB,遇到了一个问题。我正在使用一个简单的传递代理来发布来自SAP或Postman的XML数据,以测试哪些数据然后被转发到RESTAPI——这应该很容易 当我不通过ESB直接发布到RESTAPI时,它工作正常。200,好吗 但是WSO2 ESB正在自动添加SOAP信封,REST API将不接受该信封。我尝试了各种方法来删除自动添加的SOAP信封,但没有成功。尝试过XSLT转换、POX格式、丰富中介等,我能找到的每一个建议。 如果信封元素作为正文的一部分发送,我可以使用XSL

我正在探索WSO2 ESB,遇到了一个问题。我正在使用一个简单的传递代理来发布来自SAP或Postman的XML数据,以测试哪些数据然后被转发到RESTAPI——这应该很容易

当我不通过ESB直接发布到RESTAPI时,它工作正常。200,好吗

但是WSO2 ESB正在自动添加SOAP信封,REST API将不接受该信封。我尝试了各种方法来删除自动添加的SOAP信封,但没有成功。尝试过XSLT转换、POX格式、丰富中介等,我能找到的每一个建议。 如果信封元素作为正文的一部分发送,我可以使用XSLT删除它,但WSO2添加的信封元素除外

我可以在不使用SOAP信封的情况下通过以下方式访问主体:

<property name="body" expression="$body/*[1]" type="OM"/>
但我不确定如何将其转发给API

有没有关于如何阻止在WSO2 ESB中首先添加此信封的想法,或者关于如何删除它的想法

我使用了answer中的xslt代码,当我在正文中包含SOAP标记时,该代码可以正常工作,但对似乎自动添加到WSO2中的SOAP信封没有任何影响,除非给出下面的错误

我尝试了不同的线条变化:

<xsl:apply-templates select="soap:Envelope/soap:Body/*"/>
比如

<xsl:apply-templates select="soap:Envelope/*"/>
<xsl:apply-templates select="/*"/>
这是我在ESB日志中看到的一个错误:

无法使用:Value{name='null',keyValue='discountPayment'}对源XPath:s11:Body/child:[position=1]| s12:Body/child:[position=1]执行XSLT转换原因:无法使用XSLT结果创建OmeElement

我对WSO2 ESB非常陌生,以前也没有使用过XSLT,所以我的方法中可能存在一些非常基本的错误

这是我的代理xml和XSLT removeSOAP:


一位同事今天发现了这一点,我在这里发布了答案,以备将来对某人有所帮助:

在代理服务中,在发送之前,添加行

<property name="DISABLE_CHUNKING" value="true" scope="axis2"/>  
然后它就起作用了


不需要如上所示的XSLT转换,只要这一行就可以修复它。

如果您的后端是一个更好的API,那么您可以使用http端点:


请将您尝试过的代码添加到此问题。考虑一下阅读:你可以张贴你正在使用的事务,包括头文件和代理服务配置吗?添加你的ESB代理配置XML…
     <send>
        <endpoint>
           <http method="POST"
                 uri-template="http://your.backend.endpoint.org/"/>
        </endpoint>
     </send>