gpt4 book ai didi

web-services - 如何从 Web 服务返回异常?

转载 作者:行者123 更新时间:2023-12-03 15:36:44 25 4
gpt4 key购买 nike

我使用 THTTPSoapDispatcher 和 THTTPSoapPascalInvoker 在 Delphi 中编写了一个简单的 Web 服务应用程序。一切正常,除了我不明白如何处理异常。因此,每当服务方法内部发生异常时,都会生成以下 SOAP 响应:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultactor/>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Error Message</faultstring>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

没有有用的异常消息或错误代码。

如何处理异常以使响应包含异常信息?

编辑:

关于这个问题的更多内容。为了将异常转换为正确的 SOAP 响应,它应该是 ERemotableException 或该异常类的后代。问题在于 TSoapPascalInvoker(实际上是 TOPToSoapDomConvert)无法生成正确的 XML。根据soap模式,元素faultactor、faultcode、faultstring的顺序很重要,并且TOPToSoapDomConvert将它们放置在错误的顺序中:

<faultactor/>
<faultcode>SOAP-ENV</faultcode>
<faultstring>This is my Error Message</faultstring>

预计何时

<faultcode>SOAP-ENV</faultcode>
<faultstring>This is my Error Message</faultstring>
<faultactor/>

我尝试了 TOPToSoapDomConvert 选项的不同组合,但没有任何效果。

最佳答案

我最终修复了方法 TOPToSoapDomConvert.MakeFault。有更好的解决办法吗?

关于web-services - 如何从 Web 服务返回异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com