Lade...
 

CX_HTTP_REQUEST::GetBody

CX_HTTP_REQUEST::GetBody

Beschreibung:

Liefert den Body des HTTP-Requests zurück. Hat ein HTTP-Request keinen Body, was bei GET normaler Weise der Fall ist, dann liefert diese Methode einen Leerstring zurück. Obwohl es unüblich ist, ist es nicht verboten, einen GET-Request mit Body zu übermitteln. Der Webservice-Server behandelt hierbei alle HTTP-Methoden gleich.

Wichtig: Beim Content-Type application/x-www-form-urlencoded und multipart/formdata wird der Body interpretiert und die Parameter extrahiert. In diesem Fall liefert GetBody einen Leerstring und auf die Parameter kann mit GetParameterNames und GetParameter zugegriffen werden. Mehrfachnennung des gleichen Parameters wird hierbei nicht unterstützt.

Der Body von HTTP-Nachrichten ist in http://tools.ietf.org/html/rfc2616#section-4.3 spezifiziert.

Um Binärdaten (Bsp: eine .xlsx-Datei) aus dem HTTP-Body auszulesen, sollte GetBodyAsBase64 oder GetBodyAsFile verwendet werden.

230770 werden ungültige UTF-8 Zeichen von GetBody durch das Unicode-Replacement-Zeichen � ersetzt (U+FFFD).

Code-Beispiel:

Der folgende POST-Request

POST /call_person HTTP/1.1
Host: classix.de
Content-type: application/x-www-form-urlencoded
Content-length: 17
Connection: close

name=jimmy&age=13

führt bei aktiviem Webservice-Server dazu, dass folgende Message ausgeführt wird:

CALL_PERSON_POST:

  LocalVar(req)
  -> req
  //GetBody returns empty string, because body got interpreted
  req Call(GetBody) //-> STRING("")
  "name" req Call(GetParameter) //-> STRING("jimmy")
  "age"  req Call(GetParmaeter) //-> STRING("age")
}

 

Code-Beispiel: 

Folgender GET-Request

GET /call_person HTTP/1.1
Host: classix.de
Content-type: application/json
Content-length: 25
Connection: close

{"name":"jimmy","age":13}

führt bei aktiviem Webservice-Server dazu, dass folgende Message ausgeführt wird:

CALL_PERSON_GET:
{
  LocalVar(req)
  -> req
  //GetBody returns the correct body, because application/json isn't automatically parsed
  req Call(GetBody) //-> STRING("{\"name\":\"jimmy\",\"age\":13}")
  Provider(jsonTools)
  jsonTools::LoadFromString //-> CX_JSON_OBJECT({name:"jimmy", age:13})
}

 

Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_HTTP_REQUEST Der HTTP-Request, dessen Body zurückgegeben werden soll
Stack(Out) Top STRING Der Inhalt des Bodys
Funktionsaufruf: Call(GetBody)