使用cURL 將JSON 發佈到PHP:資料解釋問題
嘗試在PHP 框架中執行cURL POST 指令,使用者在解釋發佈的數據時遇到困難。具體來說,POST 參數 -d 未如預期被識別,導致數組為空。
問題陳述
使用者嘗試使用cURL 指令:
curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json
儘管在Windows (PHP 5.2) 和Linux(相同PHP 版本)執行該命令,POST數據沒有被正確解釋。伺服器回應指示一個空的「screencast」數組,如下所示:
{"screencast":{"id":null,"subject":null,"body":null, "dataUrl":null,"dataMedium":null,"createdOn":null,"author":null}}
解決方案
問題源自於cURL 預設假設-d 參數指定表單編碼數據。要解決此問題,必須使用 -H 參數將 Content-Type 指定為 JSON:
curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json
透過此修改,cURL 可以正確解釋發布的 JSON 數據,並且 POST 操作成功。
以上是為什麼我的 cURL POST JSON 資料在 PHP 中被解釋為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!