2017-03-16 161 views
1

當印地收到了404,我不能得到的迴應內容,其總是空的沒有反應的內容。德爾福印後404

例如,使用印地訪問https://www.etsy.com/people/car,我得到一個404和contentstream(或分配流)僅僅是空的。 與THttpClient一樣,我也得到了404,但也得到了響應流中404頁面的內容。

所以我的問題是,如何才能得到響應內容與印時,其404?

+0

是存儲在EIdHTTPProtocolException'的'了'ErrorMessage'的內容,像印第403錯誤:http://stackoverflow.com/questions/607876/indy-http-reading-response-content-on -a-403 –

回答

5

using Indy to access  https://www.etsy.com/people/car , I get a 404 and contentstream (or assigned stream) is just empty.

這是設計時的默認行爲,用於防止使用未請求的意外錯誤數據來破壞輸出。

how can I get the response content with Indy when its a 404?

有兩種可能的方式:

  1. 默認情況下,TIdHTTP提出了一個HTTP錯誤的EIdHTTPProtocolException例外。響應數據將在其ErrorMessage屬性中。

  2. 您可以通過避免引發的異常:

    • 使hoNoProtocolErrorException國旗在TIdHTTP.HTTPOptions財產。

    • 使用TIdHTTP.Get()的重載版本,它具有AIgnoreReplies參數,並在該參數中傳遞404(或任何其他所需的錯誤響應代碼)。

    無論哪種方式,通過默認響應數據將仍然被丟棄。您可以避免在TIdHTTP.HTTPOptions屬性中啓用最近添加的hoWantProtocolErrorContent標誌(請參閱New TIdHTTP flags and OnChunkReceived event)。

+0

謝謝雷米,回答完全接受。我使用ErrorMessage值,它現在工作得很好! – Softtouch