Heim > Artikel > Backend-Entwicklung > Warum werden meine cURL POST JSON-Daten in PHP als leer interpretiert?
JSON in PHP unter Verwendung von cURL veröffentlichen: Ein Problem mit der Dateninterpretation
Bei einem Versuch, einen cURL-POST-Befehl innerhalb eines Aussparungs-PHP-Frameworks auszuführen , ein Benutzer hatte Schwierigkeiten bei der Interpretation der geposteten Daten. Insbesondere wurde der POST-Parameter -d nicht wie erwartet erkannt, was zu einem leeren Array führte.
Problembeschreibung
Ein Benutzer hat versucht, den cURL-Befehl zu verwenden:
curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json
Obwohl der Befehl sowohl unter Windows (PHP 5.2) als auch unter Linux (gleiche PHP-Version) ausgeführt wurde, wurden die POST-Daten nicht angezeigt richtig interpretiert. Die Serverantwort zeigte ein leeres „Screencast“-Array an, wie unten zu sehen:
{"screencast":{"id":null,"subject":null,"body":null, "dataUrl":null,"dataMedium":null,"createdOn":null,"author":null}}
Lösung
Das Problem rührte von der Standardannahme von cURL her, dass der Parameter -d dies angibt formcodierte Daten. Um dieses Problem zu beheben, muss der Parameter -H verwendet werden, um den Inhaltstyp als JSON anzugeben:
curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json
Mit dieser Änderung hat cURL die veröffentlichten JSON-Daten korrekt interpretiert und der POST-Vorgang war erfolgreich.
Das obige ist der detaillierte Inhalt vonWarum werden meine cURL POST JSON-Daten in PHP als leer interpretiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!