WSO2 ESB如何发送数组列表为空错误

时间:2018-12-04 13:35:01

标签: wso2 wso2esb wso2carbon wso2dss

我像这样配置网址:

https://htygnfgvsccl.com:6753/intellige/vehicle/getAlerts 

此网址有时会获得类似的数据

{
"alertsList": [

                   {

                    "vehicleNo": "45342",

                    "alertName": "Stop Skipped",

                    "depotName": "akividu"
                   },
                    {

                    "vehicleNo": "674894",

                    "alertName": "Stop Skipped",

                    "depotName": "guntur"
                   }
                ]
            }

但是有时候会得到类似的数据

{
"alertsList": []
}

每个时间响应代码为200,但是在alertList为空的情况下如何发送错误消息

vehiclegetAlertsapi

<?xml version="1.0" encoding="UTF-8"?>
<api context="/intellige/vehicle/getAlerts" name="vehiclegetAlertsapi" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET">
        <inSequence>
            <property description="http" name="HTTP_SC" scope="axis2" type="STRING" value="404"/>
            <log level="full"/>
            <send>
                <endpoint key="vehiclegetAlertsendpoint"/>
            </send>
        </inSequence>
        <outSequence>
            <switch source="get-property('axis2','HTTP_SC')">
                <case regex="200">
                    <log description="200log" level="custom">
                        <property expression="$ctx:ERROR_CODE" name="200reserrorcode"/>
                    </log>
                    <send/>
                </case>
                <default>
                    <log description="reslog" level="custom">
                        <property expression="$ctx:ERROR_CODE" name="reserrorcode"/>
                        <property expression="$ctx:ERROR_MESSAGE" name="reserrormessage"/>
                        <property expression="get-property('axis2','HTTP_SC')" name="reshttpsc"/>
                    </log>
                </default>
            </switch>
            <clone continueParent="true">
                <target>
                    <sequence>
                        <sequence key="vehiclegetAlertsmail"/>
                    </sequence>
                </target>
            </clone>
            <send/>
        </outSequence>
        <faultSequence>
            <switch source="get-property('axis2','HTTP_SC')">
                <case regex="200">
                    <log description="200log" level="custom">
                        <property expression="$ctx:ERROR_CODE" name="200reserrorcode"/>
                    </log>
                </case>
                <default>
                    <log description="reslog" level="custom">
                        <property expression="$ctx:ERROR_CODE" name="reserrorcode"/>
                        <property expression="$ctx:ERROR_MESSAGE" name="reserrormessage"/>
                        <property expression="get-property('axis2','HTTP_SC')" name="reshttpsc"/>
                    </log>
                </default>
            </switch>
            <clone continueParent="true">
                <target>
                    <sequence>
                        <sequence key="vehiclegetAlertsmail"/>
                    </sequence>
                </target>
            </clone>
            <send/>
        </faultSequence>
    </resource>
</api>

vehiclegetAlertsendpoint

 <?xml version="1.0" encoding="UTF-8"?>
<endpoint name="vehiclegetAlertsendpoint" xmlns="http://ws.apache.org/ns/synapse">
    <http method="get" uri-template="https://htygnfgvsccl.com:6753/intellige/vehicle/getAlerts "/>
</endpoint>

vehiclegetAlertsmail:

   <?xml version="1.0" encoding="UTF-8"?>
<sequence name="vehiclegetAlertsmail" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <log level="custom">
        <property name="status" value=" vehileget alert Details Sending mail"/>
    </log>
    <property expression="get-property('axis2','HTTP_SC')" name="ErrorMessage" scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
    <property name="messageType" scope="axis2" type="STRING" value="application/json"/>
    <property name="ContentType" scope="axis2" type="STRING" value="text/plain"/>
    <property name="Subject" scope="transport" type="STRING" value="vehileget alert api not working"/>
    <property name="OUT_ONLY" scope="default" type="STRING" value="true"/>
    <property name="FORCE_SC_ACCEPTED" scope="axis2" type="STRING" value="true"/>
    <payloadFactory media-type="json">
        <format>{"vehileget alert api not working":"$1"}</format>
        <args>
            <arg evaluator="xml" expression="$ctx:ErrorMessage" xmlns:ns="http://org.apache.synapse/xsd"/>
        </args>
    </payloadFactory>
    <call>
        <endpoint key="vehiclegetAlertsmailid"/>
    </call>
    <drop/>
</sequence>

vehiclegetAlertsmailid:

<?xml version="1.0" encoding="UTF-8"?>
<endpoint name="vehiclegetAlertsmailid" xmlns="http://ws.apache.org/ns/synapse">
    <recipientlist>
        <endpoint>
            <address uri="mailto:aisha@gmail.com"/>
        </endpoint>
    </recipientlist>
</endpoint>

获取200个响应代码会自动发送数据,以防万一有其他响应发送邮件,我的邮件ID是我的问题是我的剩余url某些时间总计数据,例如alertList有时只包含Alerts列表,而不会出现以下数据:案例如何发送邮件

0 个答案:

没有答案