SEND HTTP RAW DATA

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 2004


SEND HTTP RAW DATA (Daten{; *})

ParameterTypBeschreibung
DatenBLOBZu sendende HTTP Daten
**Stückweise senden

Beschreibung

Mit dem Befehl SEND HTTP RAW DATA bestimmen Sie, dass der 4D Web Server HTTP Rohdaten sendet, die gestückelt werden können. Der Befehl funktioniert nur im nicht-kontextuellen Modus.

Daten enthält die beiden Standardteile einer HTTP Antwort, das sind Header und Body. Der Server sendet die Daten ohne vorherige Formatierung.

4th Dimension überprüft jedoch Header und Body in der Antwort auf ihre Gültigkeit:

Ist der Header unvollständig oder passt er nicht zu den Angaben des HTTP Protokolls, führt 4th Dimension die entsprechenden Anderungen aus.

Ist die HTTP Anfrage unvollständig, fügt 4th Dimension die fehlende Information hinzu. Wollen Sie z.B. die Anfrage umleiten (Redirect), müssen Sie schreiben:

   HTTP/1.1 302
   Location: http://...

Übergeben Sie nur:

   Location: http://...

vervollständigt 4th Dimension die Anfrage durch Hinzufügen von HTTP/1.1 302.

Mit dem optionalen Parameter * geben Sie an, dass die Anwort "stückweise" gesendet wird. Das Stückeln der Antwort ist hilfreich, wenn der Server eine Antwort sendet, ohne ihre Gesamtlänge zu kennen, z.B. wenn die Antwort nicht generiert wurde. Alle Browser, die mit HTTP/1.1- kompatibel sind, akzeptieren gestückelte Antworten (chunked responses).

Mit dem optionalen Parameter * bindet der Web Server automatisch das Feld transfer-encoding: chunked in den Header der Antwort ein, sofern erforderlich. Sie können den Header der Antwort natürlich auch manuell verwalten. Der Rest der Antwort berücksichtigt beim Formatieren ebenfalls die Option gestückelt. Gestückelte Antworten enthalten einen einzigen Header und eine undefinierte Anzahl Body "Stücke".

Alle Anweisungen SEND HTTP RAW DATA, die auf die Ausführung von SEND HTTP RAW DATA (Daten;*) in derselben Methode folgen, gelten als Teil der Antwort, unabhängig, ob mit oder ohne den Parameter *. Der Server beendet die stückweise Übersendung, wenn die Ausführung der Methode abgeschlossen ist.

Hinweis: Unterstützt der Web Client nicht HTTP/1.1, konvertiert 4th Dimension die Antwort automatisch in ein mit HTTP/1.0 kompatibles Format (die Daten werden nicht gestückelt gesendet). In diesem Fall entspricht das Ergebnis evtl. nicht Ihren Wünschen. Sie sollten deshalb prüfen, ob der Web Browser HTTP/1.1 unterstützt und eine entsprechende Antwort sendet.

Dafür können Sie folgenden Code verwenden:

   C_BOOLEAN($0)
   ARRAY TEXT(arFields;0)
   ARRAY TEXT(arValues;0)
   GET HTTP HEADER(arFields;arValues)
   $0:=False
   If (Size of array(arValues)>=3)
      If (Position("HTTP/1.1";arValues{3})>0)
         $0:=True   ` Browser unterstützt HTTP/1.1; $0 gibt wahr zurück
      End if
   End if

In Kombination mit dem neuen Befehl GET HTTP BODY, sowie anderen Befehlen im Kapitel "Web Server" vervollständigt dieser Befehl die Palette der Werkzeuge, die 4D Entwickler nutzen können, um die Abarbeitung ein- und ausgehender HTTP-Anfragen vollkommen eigenständig zu gestalten. Die Übersicht zeigt die verschiedenen Werkzeuge:

Beispiel

Nachfolgendes Beispiel zeigt die Verwendung von SEND HTTP RAW DATA mit der Option gestückelt. Die Daten – eine Folge von Nummern – wird in 100 Stücken gesendet, die unmittelbar in einer Schleife erzeugt werden. Beachten Sie, dass der Header der Antwort nicht explizit gesetzt wird. Der Befehl sendet ihn automatisch und fügt das Feld transfer-encoding: chunked ein, da der Parameter * verwendet wird.

   C_LONGINT($cpt)
   C_BLOB($my_blob)
   C_TEXT($output)

   For ($cpt;1;100)
      $output:="["+String($cpt)+"]"
      TEXT TO BLOB($output;$my_blob;Text without length)   
      SEND HTTP RAW DATA($my_blob;*) 
   End for

Referenz

GET HTTP BODY, GET HTTP HEADER.


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next