当出现异常时,如何获取SOAP响应?

Cob*_*ger 3 delphi soap web-services response

我打电话给第三方Web服务并使用以下格式的消息返回ESOAPHTTPException:

这里有神秘的消息 - URL:http:// webserviceurl - SOAPAction:performWithArgList

现在,此Web服务的支持人员已要求完整的SOAP响应.通常,我会将事件处理程序附加到THTTPRIO.OnAfterExecute并简单地存储我作为参数接收的流的内容.

但是由于Delphi引发了异常,因此该事件处理程序不会执行.我理解异常可能实际上意味着服务以某种灾难性的方式失败了,但仍然应该有某种响应(不是超时错误).

Delphi将其转换为异常之前,我是否可以使用其他方法来捕获响应?

Bru*_*auB 6

对于基于ERemotableException的异常,您需要查看OnAfterExecute事件,因为它表示服务发回的错误...但对于ESOAPHTTPException(您的情况),您将要处理OnWinInetError事件(http:// docwiki.embarcadero.com/VCL/en/SOAPHTTPTrans.THTTPReqResp.OnWinInetError).

D2010在SOAP HTTP处理中引入了一个错误.典型的症状是它会错过HTTP失败(例如服务器忙时).所以也许这不是你遇到的问题,但不知道你所看到的确切错误代码或消息,人们无法分辨.您可以在此处找到更多详细信息:https: //forums.embarcadero.com/message.jspa?messageID = 304898&tstart = 0

例如,如果您收到有关"处理处于错误状态"的错误,则上述问题就是罪魁祸首.这意味着"发送"失败但运行时很乐意继续读取响应.您可以从以下主题中找到有关该内容的更多信息:https://forums.embarcadero.com/message.jspa?messageID = 307048.

所以你应该处理OnWinInetError并获取错误代码(LastError param).这可能是理解失败的关键.

干杯,

布诺