Heim >Backend-Entwicklung >PHP-Tutorial >Warum werden meine cURL POST JSON-Daten in PHP als leer interpretiert?

Warum werden meine cURL POST JSON-Daten in PHP als leer interpretiert?

DDD
DDDOriginal
2024-11-19 03:34:02573Durchsuche

Why is my cURL POST JSON data interpreted as empty in PHP?

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!

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