Bei der Arbeit mit Webdiensten, die die Veröffentlichung von JSON-formatierten Daten erfordern, ist es wichtig, die POST-Werte in PHP korrekt zu verarbeiten. Dieser Artikel führt Sie durch die Schritte zum effektiven Lesen und Analysieren von JSON-POST-Daten.
Wenn Sie Probleme mit leeren $ haben _POST-Werte trotz Angabe von application/json als Inhaltstyp angezeigt werden, liegt dies wahrscheinlich an der Art und Weise, wie Sie die Post-Werte filtern. In diesem Fall ist die herkömmliche Variable $_POST nicht zum Lesen von JSON-formatierten Daten geeignet.
Um auf das Raw zuzugreifen Für JSON-POST-Daten müssen Sie file_get_contents('php://input') verwenden. Diese Funktion liest den Eingabestream des aktuellen Skripts und gibt den rohen HTTP-Anfragetext zurück.
Aktualisierter PHP-Code auf der Empfängerseite:
$json = file_get_contents('php://input'); $obj = json_decode($json);
Beim Testen Ihres Webservices ist es wichtig sicherzustellen, dass die POST-Daten im richtigen Format gesendet werden. In Ihrem Testcode:
Aktualisierter Test Code:
$data_string = json_encode($data); $ch = curl_init('http://webservice.local/'); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data_string)) ); $result = curl_exec($ch); $result = json_decode($result);
Stellen Sie sicher, dass header('Content-type: application/json') auf der Empfängerseite nur einmal aufgerufen wird.
Das obige ist der detaillierte Inhalt vonWie kann ich JSON-POST-Daten in PHP richtig lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!