Delphi 德尔福印地404后无响应内容

Delphi 德尔福印地404后无响应内容,delphi,indy,Delphi,Indy,当Indy获得404时,我无法获得响应内容,它总是空的 例如,使用Indy访问,我得到一个404,contentstream(或分配的流)只是空的。 通过对THttpClient执行相同的操作,我还得到了404,但也得到了响应流中404页面的内容 所以我的问题是,当Indy是404时,我怎样才能得到它的回复内容 使用Indy访问,我得到一个404,contentstream(或分配的流)只是空的 根据设计,这是默认行为,用于防止未请求的意外错误数据损坏输出 当Indy是404时,我如何获得响应内

当Indy获得404时,我无法获得响应内容,它总是空的

例如,使用Indy访问,我得到一个404,contentstream(或分配的流)只是空的。 通过对THttpClient执行相同的操作,我还得到了404,但也得到了响应流中404页面的内容

所以我的问题是,当Indy是404时,我怎样才能得到它的回复内容

使用Indy访问,我得到一个404,contentstream(或分配的流)只是空的

根据设计,这是默认行为,用于防止未请求的意外错误数据损坏输出

当Indy是404时,我如何获得响应内容

有两种可能的方法:

  • 默认情况下,
    TIdHTTP
    在HTTP错误上引发
    EIdHTTPProtocolException
    异常。响应数据将位于其
    ErrorMessage
    属性中

  • 您可以通过以下方式避免引发的异常:

    • TIdHTTP.HTTPOptions
      属性中启用
      hoNoProtocolErrorException
      标志

    • 使用重载版本的
      TIdHTTP.Get()
      ,该版本具有
      aignoreplies
      参数,在该参数中传递404(或您想要的任何其他错误响应代码)

    无论哪种方式,默认情况下仍将丢弃响应数据。通过在
    TIdHTTP.HTTPOptions
    属性中启用最近添加的
    hoWantProtocolErrorContent
    标志,可以避免这种情况(请参阅)


  • 是存储在
    EIdHTTPProtocolException
    ErrorMessage
    中的内容,与Indy 403错误类似:谢谢Remy,答案完全接受。我使用了ErrorMessage值,它现在可以正常工作了!