Heim >Backend-Entwicklung >PHP-Tutorial >Wie rufe ich POST-Werte mit dem Inhaltstyp „application/json' in PHP ab?

Wie rufe ich POST-Werte mit dem Inhaltstyp „application/json' in PHP ab?

Linda Hamilton
Linda HamiltonOriginal
2024-12-23 15:53:15404Durchsuche

How to Retrieve POST Values with `application/json` Content Type in PHP?

Lesen von JSON POST mit PHP

Bei dieser Anfrage stößt der Benutzer auf Schwierigkeiten beim Extrahieren von POST-Werten und beim Zurückgeben eines JSON-codierten Arrays aus einem Webdienst nach der Umstellung auf die Verwendung eines JSON-basierten Inhaltstyps. Es stellte sich die folgende Frage:

Frage:

Was ist die geeignete Methode zum Abrufen von POST-Werten, wenn der Inhaltstyp application/json ist?

Antwort:

Herkömmliche PHP-Superglobals wie $_POST enthalten nicht das Gewünschte Daten, wenn der Inhaltstyp application/json ist. Um auf die rohen POST-Daten zuzugreifen, ist es notwendig, von einer anderen Quelle zu lesen.

Lösung:

Verwenden Sie die Funktion file_get_contents() von PHP, um die rohen POST-Eingaben abzurufen und Analysieren Sie es dann mit json_decode(). Dieser Ansatz ermöglicht den Zugriff auf die Daten in einem assoziativen Array.

Zusätzliche Überlegung:

Der Testcode des Benutzers muss ebenfalls geändert werden. CURLOPT_POSTFIELDS sollte verwendet werden, um den Anforderungstext als JSON-Zeichenfolge festzulegen, anstatt zu versuchen, ihn als application/x-www-form-urlencoded zu kodieren.

Aktualisierter PHP-Code zum Testen:

$data_string = json_encode($data);

$curl = curl_init('http://webservice.local/');
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
);

$result = curl_exec($curl);
$result = json_decode($result);
var_dump($result);

Aktualisierter PHP-Code für das Web Service:

header('Content-type: application/json');

// Remove duplicate line
// header('Content-type: application/json');

// Remaining code...

Das obige ist der detaillierte Inhalt vonWie rufe ich POST-Werte mit dem Inhaltstyp „application/json' in PHP ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn