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
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:
{
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
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:
{
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 | 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 |