我可能会偏离基础,但我一直在尝试整个下午在这个凹陷的PHP框架教程中运行curl post命令。我不明白的是PHP应该如何解释我的POST,它总是作为一个空数组出现。curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \ http://localhost:3570/index.php/trainingServer/screencast.json(那里的斜线只是为了让我看起来不像白痴,但是我使用PHP 5.2在Windows上执行此操作,也在Linux服务器上执行此操作,与Linux卷曲相同的版本)必须有一些我缺少的东西,因为它看起来很简单,这篇文章不是正确的解释,如果是的话,一切都会很好。这就是我得到的回报:HTTP / 1.1 409冲突日期:2009年5月1日星期五22:03:00 GMT服务器:Apache / 2.2.8(Win32)PHP / 5.2.6X-Powered-By:PHP / 5.2.6转移编码:分块内容类型:text / html; 字符集= ISO-8859-1{ “抓屏”:{ “ID”:空, “主题”:空, “身体”:空, “dataUrl”:空, “dataMedium”:空, “createdOn”:空, “作者”:空}}
3 回答
万千封印
TA贡献1891条经验 获得超3个赞
Jordans分析为什么没有填充$ _POST-数组是正确的。但是,你可以使用
$data = file_get_contents("php://input");
只需检索http正文并自行处理。请参阅PHP输入/输出流。
从协议的角度来看,这实际上更加正确,因为无论如何你还没有真正处理http多部分表单数据。另外,在发布请求时使用application / json作为内容类型。
慕勒3428872
TA贡献1848条经验 获得超6个赞
通常,该参数-d被解释为表格编码。你需要-H参数:
curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json
Helenr
TA贡献1780条经验 获得超4个赞
我相信你得到一个空数组,因为PHP期望发布的数据采用Querystring格式(key = value&key1 = value1)。
尝试将您的curl请求更改为:
curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json
并看看这是否有帮助。
- 3 回答
- 0 关注
- 388 浏览
添加回答
举报
0/150
提交
取消