Json на мыло и мыло на Json с xslt-посредниками с Rest wso2 API 2.6.0 - PullRequest
0 голосов
/ 19 января 2019

Я публикую API отдыха с политиками посредничества InFlow и OutFlow в wso2 am 2.6.0.Я опубликовал этот API с теми же посредниками Inflow и OutFlow в wso2 am 2.2.0, и он работал правильно, но в wso2 am версия 2.6.0 я получаю сообщение об ошибке 415 и тело ответа: {}.отмечая шоу в выходных.и в журналах консоли выдается следующее предупреждение: «WARN - XSLTMediator Обнаружено пустое тело мыла, пропускающее преобразование XSLT и продолжающее посредничество».У моего Api есть один параметр "с тех пор".Приток:

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="AdjustingFactorsJsonToSoap.xml" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<property name="HTTP_METHOD" scope="axis2" type="STRING" value="POST"/>
<header name="Action" scope="default" value="http://tempuri.org/IAdjustedPublisher/AdjustingFactors"/>
<property expression="$url:since" name="req.var.since" scope="default" type="STRING"/>
<payloadFactory media-type="xml">
    <format>
        <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
            <s:Body>
                <AdjustingFactors xmlns="http://tempuri.org/">
                    <since>$1</since>
                </AdjustingFactors>
            </s:Body>
        </s:Envelope>
    </format>
    <args>
        <arg evaluator="xml" expression="get-property('req.var.since')"/>
    </args>
</payloadFactory>
<property name="messageType" scope="axis2" type="STRING" value="application/soap+xml"/>
</sequence>

, выходной поток:

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="AdjustingFactorsSoapToJson" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
<xslt key="conf:XsltFiles/AdjustingFactorsXslt.xsl"/>
<property name="messageType" scope="axis2" type="STRING" value="application/xml"/>
<payloadFactory media-type="json">
    <format>$1</format>
    <args>
        <arg evaluator="xml" expression="$body//*" xmlns:ns="http://org.apache.synapse/xsd"/>
    </args>
</payloadFactory>
</sequence>

, а файл xslt с именем «AdjustingFactorsXslt.xsl»:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="xs" version="2.0" xmlns:fn="http://www.w3.org/2005/xpath-functions"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:a="http://schemas.datacontract.org/2004/07/Asa.Mbdp.Platform.Publish.Tmc.Head.Proxy" 
        xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:t="http://tempuri.org/">   
    <xsl:output encoding="UTF-8" indent="yes" media-type="application/json" method="text"/>
    <xsl:strip-space elements="*"/>
    <xsl:template match="/">
        {
        "Response":{
            "AdjustingFactors":[
            <xsl:for-each select="s:Envelope/s:Body/t:AdjustingFactorsResponse/t:AdjustingFactorsResult/a:NamedFactor">
            {
            "Capital":"<xsl:value-of select="a:Capital"/>" , 
            "Dividend":"<xsl:value-of select="a:Dividend"/>",
            "PublisherIsin":"<xsl:value-of select="a:PublisherIsin"/>"
            }
            <xsl:if test="position()!=last()">,</xsl:if>
            </xsl:for-each>             
            ]
        }
    }
    </xsl:template>
</xsl:stylesheet>
...