Delphi:Indy - 如何在错误时获取响应体?

12

Delphi6和XE3。

我想获取请求的真实响应体。但是服务器返回错误代码500。然后Indy使用错误描述替换响应文本。

此主页还设计用于非异常操作时返回500,因此我们需要从响应文本中确定如何处理。

当状态码为500时,我可以从IdHTTP或异常对象中获取响应文本吗?

感谢任何信息!


对于XE3版本来说,有趣的是EIdHTTPProtocolException的FErrorMessage包含了响应内容,但是我无法访问它... :-( - durumdara
@durumdara:为什么您无法访问它?EIdHTTPProtocolException.ErrorMessage是一个公共属性。 - Remy Lebeau
这是我的错误...我使用了E.Message而不是E.ErrorMessage,但我每次都错过了... :-( - durumdara
1个回答

20

TIdHTTP遇到服务器错误时,它会引发一个EIdHTTPProtocolException异常,其中ErrorCode属性包含HTTP状态码(500等),Message属性包含HTTP状态文本("Internal Error"等),而ErrorMessage属性包含响应正文的文本,如果有的话。因此,例如:

try
  IdHTTP1.Get(...);
except
  on E: EIdHTTPProtocolException do begin
    // use E.ErrorCode, E.Message, and E.ErrorMessage as needed...
  end;
end;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接