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

Delphi 10.1 Berlin编译ISAPI DLL后HTTPRIO报SOAP Content-Type错误求助

解决Delphi 10.1 Berlin编译ISAPI SOAP DLL后Content-Type异常的问题

我之前帮不少开发者排查过类似的Delphi版本升级后ISAPI SOAP DLL的问题,你遇到的这个ESOAPHTTPException(提示收到text/html类型内容,而SOAP期望text/xml)其实挺典型的,大概率是Delphi 10.1 Berlin对SOAP/ISAPI的处理逻辑有了细微调整,导致响应头的Content-Type没正确设置。下面是几个常见的排查方向和解决办法:

  • 手动强制设置响应Content-Type
    Delphi XE5到10.1 Berlin之间,SOAPHTTPDisp等SOAP相关单元的默认响应头处理逻辑有改动。你可以在DLL的SOAP响应处理代码中,手动指定Content-Type为标准的SOAP格式:

    // 在生成SOAP响应前添加这行代码
    Web.Response.ContentType := 'text/xml; charset=utf-8';
    

    同时要检查代码中有没有错误输出HTML内容(比如自定义错误页面)的逻辑,这类代码会覆盖原本的Content-Type设置。

  • 抓包对比SOAP响应内容
    用Fiddler或Wireshark抓包,对比XE5和10.1 Berlin编译的DLL返回的响应内容:

    重点查看响应头的Content-Type字段,以及响应体是否是标准的XML格式,有没有额外的HTML标签、空白字符或者格式错误——这些都可能让客户端误判为text/html类型。

  • 检查SOAP序列化逻辑
    Delphi 10.1的SOAP序列化器对格式的要求更严格,确认你的DLL中返回的SOAP消息是否符合SOAP 1.1/1.2标准。比如有没有未正确闭合的XML标签,或者特殊字符未转义的情况。

  • 安装Delphi 10.1的官方补丁
    Delphi 10.1 Berlin存在一些SOAP相关的已知Bug,其中就包括ISAPI响应头设置异常的问题。你可以查看Embarcadero的官方补丁列表,安装对应的修复补丁后重新编译DLL。

如果以上方法都没解决问题,还可以尝试完全接管SOAP响应的构建过程,绕过Delphi的自动处理逻辑,手动生成符合标准的XML响应并设置正确的Content-Type。

内容的提问来源于stack exchange,提问作者Pieter van Wyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:20:41