Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich JSON-POST-Daten in meinem PHP-Webdienst lesen?
Haben Sie Schwierigkeiten, JSON-Daten in einem PHP-Webdienst zu lesen?
< h3>Das Problem
Sie haben einen Webdienst Das funktioniert perfekt mit einfachen Formulardaten. Wenn Sie jedoch POST-Daten mit dem Inhaltstyp „application/json“ senden müssen, gibt Ihr Webdienst keine Werte zurück. Sie vermuten, dass es damit zusammenhängt, wie Sie mit den POST-Werten umgehen.
Das Problem liegt in der Art und Weise, wie Sie auf die POST-Daten zugreifen. Für JSON-POST-Anfragen müssen Sie eine andere Methode als die Standardvariable $_POST verwenden.
Zum Lesen von JSON-Daten aus dem POST Auf Anfrage verwenden Sie den folgenden Code:
$inputJSON = file_get_contents('php://input'); $input = json_decode($inputJSON, TRUE); // Convert JSON into an array // Use the $input array to access your JSON data
In Ihrer CURL-Anfrage verwenden Sie CURLOPT_POSTFIELDS, um Ihre Parameter als application/x-www-form-urlencoded zu kodieren. Für eine JSON-POST-Anfrage müssen Sie jedoch JSON-formatierte Daten bereitstellen.
Ändern Sie Ihren CURL-Code wie folgt:
$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) ));
Stellen Sie sicher, dass es nur einen Aufruf von header('Content-type: application/json') gibt. auf Ihrer Webservice-Seite. Bei mehreren Aufrufen kann es zu Störungen der JSON-Antwort kommen.
Das obige ist der detaillierte Inhalt vonWie kann ich JSON-POST-Daten in meinem PHP-Webdienst lesen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!