Indy的TIdHttp
類在最近的版本中有一個Delete()
例程。但由於某種原因,這是一個程序,而不是一個功能。 Put()
,Get()
等都是返回響應主體內容的函數。無論是作爲一個字符串還是將其交付給TStream
。這是不可能的Delete()
,這是矛盾的DELETE
的定義:如何使用TIdHttp獲取DELETE的響應文本?
成功的響應應該是200(OK),如果所述響應包括描述狀態,202(已接受),如果動作具有不是實體尚未制定,或204(無內容),如果行動已頒佈但答覆不包括實體。
然後,我嘗試使用GetResponse()
,但是這只是優雅地關閉了我的連接,沒有填寫響應。
那麼如何從DELETE響應中讀取響應主體的內容呢?
'TIdHttp.ResponseText'屬性怎麼樣?無論如何,你希望在回覆文本中找到什麼? (除了測試'ResponseCode') – kobik
'TIdHttp.ResponseText'顯然不是我想的。它與'ResponseCode'密切相關,所以在200響應中,'TIdHttp.ResponseText'包含'HTTP/1.1 200 OK',而不是實際的響應主體。現在,我的工作可以在沒有數據的情況下工作,但它只是返回它刪除的項目的ID,所以我可以驗證它刪除了正確的項目。 – Svip
我從來沒有使用過'DELETE'方法,但我想你可以在響應頭文件中返回該ID。另外,我假設你控制服務器,並且我不確定爲什麼你需要首先使用'DELETE'方法。爲什麼不使用'GET'或'POST'並在請求參數中指出哪些資源要刪除? – kobik