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

Delphi SOAP应用触发ESOAPDomConvertError异常,求故障排查方案

问题分析与解决

首先明确说:这个错误和MD5令牌没有任何关系,它是Delphi SOAP框架中典型的类型兼容性问题。

错误原因拆解

错误提示里的TRIO.QueryInterface$1093$ActRec这个类,要么是你自定义的、要么是自动生成的,但它没有遵循Delphi SOAP的核心规则:所有需要通过SOAP传输的类必须继承自TRemotable。

SOAP在Delphi中依赖TRemotable来处理序列化、反序列化以及与WSDL定义的类型映射,普通的TObject派生类或者其他非SOAP基类无法被SOAP框架正确转换,于是就抛出了这个ESOAPDomConvertError异常。

解决步骤

  1. 排查自定义类/自动生成类的继承关系
    检查你在SOAP接口函数中用到的参数、返回值对应的类,确保它们的基类是TRemotable。比如:
    正确的SOAP兼容类定义:

    type
      TQueryActRec = class(TRemotable)
      private
        FID: Integer;
        FName: string;
      published
        property ID: Integer read FID write FID;
        property Name: string read FName write FName;
      end;
    

    如果你之前的类是直接继承TObject,一定要改成继承TRemotable,并且用published段暴露需要序列化的属性(SOAP只会处理published的成员)。

  2. 验证WSDL生成与Delphi类的映射
    如果你是通过WSDL生成的客户端/服务端代码,有时候自动生成的类可能出现继承错误,需要手动检查生成的单元文件,确认所有复杂类型对应的类都继承自TRemotable。

  3. 检查接口调用的参数传递
    确认你在调用SOAP接口时,传入的参数类型是正确的SOAP兼容类,而不是不小心传入了普通对象或者其他不兼容的类型。比如不要把TStringList(普通类)直接传给需要TRemotable派生类的参数。

额外说明

MD5令牌相关的错误通常会表现为“签名无效”“权限验证失败”“令牌过期”这类提示,和类型转换完全是两个不同的问题方向,所以可以排除MD5令牌的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:05:14