使用 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中文网其他相关文章!