You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSO2 EI调用DSS报错:首元素需为Envelope但找到html

WSO2 EI调用DSS接口返回解析错误排查

问题描述

在WSO2 EI中通过select查询从DSS获取数据,使用Payload Factory完成报文转换后将报文发送至目标端点,执行时抛出错误:
First Element must contain the local name, Envelope , but found html

关联序列配置

<sequence name="ValidateRecordExistanceInDB" xmlns="http://ws.apache.org/ns/synapse">
<payloadFactory media-type="xml">
    <format>
        <p:select_with_key_novum_extension_operation xmlns:p="novum.service">
            <xs:Id xmlns:xs="novum.service">$1</xs:Id>
        </p:select_with_key_novum_extension_operation>
    </format>
    <args>
        <arg evaluator="xml" expression="get-property('Extension')"
            literal="false" xmlns:ns="http://org.apache.synapse/xsd"/>
    </args>
</payloadFactory>
<property name="REST_URL_POSTFIX" scope="axis2" type="STRING" value=""/>
<property name="HTTP_METHOD" scope="axis2" type="STRING" value="POST"/>
<property name="ContentType" scope="axis2" type="STRING" value="text/xml"/>
<property name="Accept" scope="transport" type="STRING" value="text/xml"/>
<property expression="$ctx:config//*[local-name()='localHost']"
    name="localHost" scope="default" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
<header
    expression="concat($ctx:localHost, '/services/NovumAudioValidationDataRetrievalService')"
    name="To" scope="default" xmlns:ns="http://org.apache.synapse/xsd"/>
<property name="SOAPAction" scope="transport" type="STRING" value="select_with_key_novum_extension"/>
<call>
    <endpoint>
        <default format="soap11">                
        </default>
    </endpoint>
</call>
<filter xmlns:ds="novum.service"
    xmlns:ns="http://org.apache.synapse/xsd" xpath="boolean(//ds:novum_extensionCollection/ds:novum_extension)">
    <then>
        <property expression="//*[local-name()='Department']" name="department"/>
        <property expression="//*[local-name()='Username']" name="username"/>
        <property expression="//*[local-name()='Extension']" name="extension"/>
        <property expression="//*[local-name()='Novum_Extension']" name="novumExtension"/>
        <property expression="//*[local-name()='email']" name="email"/>
        <property expression="//*[local-name()='location']" name="location"/>
        <property expression="//*[local-name()='selling_dealer__c']" name="selling_dealer__c"/>            
        <log level="custom">
            <property
                expression="concat('successfully retrieved record with extension ', $ctx:Rec_Id, ' from the db')" name="novum-api-status"/>
            <property expression="$ctx:department" name="department"/>
            <property expression="$ctx:location" name="location"/>
            <property expression="$ctx:username" name="username"/>
            <property expression="$ctx:email" name="notifierEmail"/>
            <property expression="$ctx:selling_dealer__c" name="selling_dealer__c"/>
        </log>
    </then>
    <else>
        <log level="custom">
            <property
                expression="concat('record with extension ', $ctx:Rec_Id, ' not found in the db, sending out error email notification')" name="novum-api-status"/>
        </log>
        <property
            expression="concat('Record with Novum Extension ', $ctx:Rec_Id, ' can not be found in the database.')" name="errorMsg"/>
        <sequence key="NotifyErrorSubscribers"/>
        <drop/>
    </else>
</filter>    

错误根因

端点配置指定使用soap11格式解析响应,要求响应报文根节点必须为SOAP标准的Envelope节点,但实际DSS返回的是HTML格式内容(通常是服务错误页、404页、权限拦截页、服务异常默认页),导致SOAP解析失败抛出异常。

排查与修复方案

  • 校验DSS服务地址有效性
    直接通过接口测试工具调用拼接后的DSS地址(localHost配置值 + /services/NovumAudioValidationDataRetrievalService),确认返回内容格式:
    • 若返回404类HTML页:检查DSS服务是否成功部署、服务名拼写是否正确、localHost配置的IP/端口是否和DSS实际监听地址一致
    • 若返回401/403类HTML页:说明调用缺少认证信息,需要在请求头补充对应Authorization认证参数
    • 若返回500类HTML页:说明DSS内部SQL查询执行失败,登录DSS节点查看后台日志定位SQL执行错误
  • 修正Content-Type属性配置错误
    现有配置中Content-Type的属性名拼写错误,WSO2 EI中指定请求Content-Type的axis2属性名为CONTENT_TYPE,错误的属性名会导致请求头不符合DSS要求触发错误返回,替换原有配置为:
    <property name="CONTENT_TYPE" scope="axis2" type="STRING" value="text/xml;charset=UTF-8"/>
    
  • 校验SOAPAction配置匹配性
    现有配置的SOAPAction值为select_with_key_novum_extension,需要和DSS服务定义中对应操作的SOAPAction完全一致,部分DSS版本要求SOAPAction携带服务命名空间,格式参考novum.service/select_with_key_novum_extension,SOAPAction不匹配会导致DSS返回操作不支持的错误页。
  • 快速定位调试方法
    在<call>中介器之后新增全量日志打印配置,直接输出DSS返回的完整HTML内容,可快速定位具体错误原因:
    <log level="full"/>
    

参考截图

内容的提问来源于stack exchange,提问作者Thamu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:45:30