Delphi Indy在404之后没有回复内容

Sof*_*uch 4 delphi indy

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

例如,使用Indy访问https://www.etsy.com/people/car,我得到404并且contentstream(或指定的流)只是空的.对THttpClient做同样的事情,我也得到了404,但也获得了响应流中404页面的内容.

所以我的问题是,当它是404时,我如何获得Indy的响应内容?

Rem*_*eau 6

使用Indy访问  https://www.etsy.com/people/car,我得到404并且contentstream(或指定的流)只是空的.

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

如果它是404,我怎样才能获得Indy的响应内容?

有两种可能的方法:

  1. 默认情况下,TIdHTTPEIdHTTPProtocolException在HTTP错误上引发异常.响应数据将在其ErrorMessage属性中.

  2. 您可以通过以下任一方式避免引发异常:

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

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

    无论哪种方式,默认情况下仍会丢弃响应数据.您可以避免hoWantProtocolErrorContentTIdHTTP.HTTPOptions属性中启用最近添加的标志(请参阅新的TIdHTTP标志和OnChunkReceived事件).