当Indy获得404时,我无法得到响应内容,它总是空的.
例如,使用Indy访问https://www.etsy.com/people/car,我得到404并且contentstream(或指定的流)只是空的.对THttpClient做同样的事情,我也得到了404,但也获得了响应流中404页面的内容.
所以我的问题是,当它是404时,我如何获得Indy的响应内容?
使用Indy访问 https://www.etsy.com/people/car,我得到404并且contentstream(或指定的流)只是空的.
根据设计,这是默认行为,以防止使用未请求的意外错误数据破坏输出.
如果它是404,我怎样才能获得Indy的响应内容?
有两种可能的方法:
默认情况下,TIdHTTP会EIdHTTPProtocolException在HTTP错误上引发异常.响应数据将在其ErrorMessage属性中.
您可以通过以下任一方式避免引发异常:
hoNoProtocolErrorException在该TIdHTTP.HTTPOptions属性中启用该标志.
使用它的重载版本TIdHTTP.Get()有一个AIgnoreReplies参数,在该参数中传递404(或任何其他你想要的错误响应代码).
无论哪种方式,默认情况下仍会丢弃响应数据.您可以避免hoWantProtocolErrorContent在TIdHTTP.HTTPOptions属性中启用最近添加的标志(请参阅新的TIdHTTP标志和OnChunkReceived事件).
| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |