Problem beim Lesen des HTTP-Anforderungstexts aus einem JSON-POST in PHP
In PHP können Sie den Körper einer HTTP-Anforderung mit der Funktion file_get_contents('php:input')
lesen. Um den Körper als JSON-Objekt zu parsen, können Sie die Funktion json_decode()
verwenden. Hier ist ein Beispiel dafür, wie Sie dies für eine JSON-POST-Anforderung tun können:
<?php
$data = json_decode(file_get_contents('php://input'), true);
Die Funktion json_decode()
nimmt den rohen Eingabezeichenfolgenstring und wandelt ihn in ein PHP-assoziatives Array um. Der zweite Parameter von json_decode()
ist ein boolescher Wert, der angibt, ob ein assoziatives Array zurückgegeben werden soll. In diesem Fall ist es auf true
gesetzt.
Stellen Sie sicher, dass Ihre PHP-Version mindestens 5.2 ist und überprüfen Sie auch, ob die JSON-Erweiterung in Ihrer php.ini-Datei aktiviert ist.
Außerdem sollten Sie überprüfen, ob die POST-Anforderung im richtigen Format und mit dem richtigen Content-Type-Header kommt.
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_SERVER['CONTENT_TYPE']) && $_SERVER['CONTENT_TYPE'] === 'application/json') {
$data = json_decode(file_get_contents('php://input'), true);
// do something with $data
} else {
// handle invalid request
}