首页 >后端开发 >php教程 >为什么我的 cURL POST JSON 数据在 PHP 中被解释为空?

为什么我的 cURL POST JSON 数据在 PHP 中被解释为空?

DDD
DDD原创
2024-11-19 03:34:02573浏览

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

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn