Zum Hauptinhalt springen

HttpGetData

obj -> HttpGetData(handle1) : int

Ausführbar von Clients mit grafischer Oberfläche Ausführbar vom Server Ausführbar von Clients mit Programmierschnittstelle Ausführbar von der Web-Schnittstelle Ausführbar vom Druckprozessor Ausführbar von der ODBC-Schnittstelle Ausführbar vom SOA-Service

Daten des HTTP-Objekts lesen

Details

Mit diesem Befehl werden die Daten des HTTP-Bodys eingelesen. Soll der Inhalt des HTTP-Bodys gesetzt werden, erfolgt das mit der Anweisung HttpClose (). In (obj) wird der Deskriptor des HTTP -Objekts übergeben. Das Objekt muss vom Typ _HttpRecvRequest oder _HttpRecvResponse sein. In (handle1) wird das Objekt angegeben, in das die Daten eingelesen werden sollen. Dafür können drei verschiedene Objekttypen verwendet werden:

  • Datei Der in (handle1) übergeben Deskriptor muss vom Typ _HdlFile sein. Die Daten werden direkt in die angegebene Datei geschrieben.
  • Memory-Objekt Der in (handle1) übergeben Deskriptor muss vom Typ _HdlMem sein. Die Daten werden in das angegebene Memory -Objekt geschrieben.
  • Cte-Liste Der in (handle1) übergeben Deskriptor muss vom Typ _HdlCteList sein. In diesem Fall enthält der HTTP-Body Parameter, die in die angegebene Cte-Liste eingelesen werden.
info

Die Cte-Liste enthält nur dann Werte, wenn die Daten URL-kodiert ( x-www-form-urlencoded ) übermittelt werden. Ansonsten ist das Ergebnis _ErrData .

Neben den Objekttypen müssen noch beim Einlesen von Daten drei Fälle unterschieden werden:

  • Im einfachsten Fall hat der HTTP-Header einen Content-Length-Eintrag, der die Größe des HTTP-Bodys enthält. Dadurch ist die Datenmenge bereits vor dem Aufruf der Anweisung bekannt.
  • Im zweiten Fall hat der HTTP-Header einen Transfer-Encoding: chunked-Eintrag, der die Übertragung der Daten in mehreren Blöcken anzeigt. Es werden dann soviele Blöcke gelesen, wie die Gegenstelle liefert. In einigen Fällen wird zwischen den Daten und der nächsten Blocklänge kein Zeilenumbruch gesendet. Dies wird ignoriert und der nächste Block gelesen.
  • Im dritten Fall werden solange Daten vom Socket gelesen, bis ein Timeout eintritt. Hierbei sollte der Timeout des Sockets vor dem Lesen der Daten auf einen niedrigen Wert (0,25 bis 3 Sekunden) gesetzt werden, da HttpGetData() auf jeden Fall bis zum Timeout wartet.

Als Rückgabewert wird ein Fehlerwert zurückgegeben. Bei _ErrOk ist kein Fehler aufgetreten. Im Fehlerfall können Fehlerkonstanten aus den Bereichen der externen Dateien, Socketfehler oder Fehler bei der Verarbeitung von Memory -Objekten zurückgegeben werden.

Mögliche Laufzeitfehler: