Indys TIdHttp
Klasse hat - in einer aktuellen Version - eine Delete()
Routine. Aber aus irgendeinem Grund ist dies eine Prozedur, keine Funktion. Put()
, Get()
usw. sind alle Funktionen, die den Inhalt des Antworttextkörpers zurückgeben. Entweder als String oder an eine TStream
geliefert. Dies ist nicht möglich mit Delete()
, die DELETE
‚s Definition widersprüchlich ist:Wie erhält man den Antworttext eines DELETE mit TIdHttp?
Eine erfolgreiche Antwort sollte 200 (OK), wenn die Antwort enthält eine Einheit beschreibt den Status, 202 (angenommen), wenn die Aktion hat nicht wurde jedoch in Kraft gesetzt oder 204 (Kein Inhalt), wenn die Aktion ausgeführt wurde, aber die Antwort keine Entität enthält.
Ich versuchte dann mit GetResponse()
, aber das stattdessen meine Verbindung einfach geschlossen, ohne die Antwort zu füllen.
Also wie lese ich den Inhalt des Antworttext von einer DELETE-Antwort?
Wie wäre es 'TIdHttp.ResponseText' Eigenschaft? Was erwarten Sie auf jeden Fall im Antworttext? (außer Tests für den "ResponseCode") – kobik
'TIdHttp.ResponseText' war anscheinend nicht das, was ich dachte. Es ist eng mit 'ResponseCode' verwandt, also enthält 'TIdHttp.ResponseText' bei einer 200 Antwort 'HTTP/1.1 200 OK', nicht den eigentlichen Antworttext. Im Moment kann meine Arbeit ohne die Daten funktionieren, aber es wurde nur die ID des gelöschten Elements zurückgegeben, damit ich überprüfen konnte, ob das richtige Element gelöscht wurde. – Svip
Ich habe nie 'DELETE' Methode verwendet, aber ich denke, Sie könnten diese ID in den Antwortheadern zurückgeben. Außerdem nehme ich an, dass Sie den Server kontrollieren, und ich bin nicht so sicher, warum Sie die DELETE-Methode überhaupt verwenden müssen. warum nicht 'GET' oder' POST' verwenden und in der Anfrage angeben, welche Ressource gelöscht werden soll? – kobik