我可能还差得远,但是我整个下午一直在尝试在本教程PHP框架教程中运行curlpost命令。我不明白的是PHP应该如何解释我的POST,它总是以空数组的形式出现。
curl -i -X POST -d '{"screencast":{"subject":"tools"}}' \
http://localhost:3570/index.php/trainingServer/screencast.json
(其中的斜线只是让我看起来不像是个白痴,而是我使用PHP 5.2在Windows上执行此操作,也曾在与Linux
curl相同版本的Linux服务器上尝试过)
我必须缺少一些东西,因为它看起来很简单,帖子解释得不好,如果可以的话,一切都会很好。
这就是我得到的:
HTTP / 1.1 409冲突
日期:2009年5月1日,星期五,格林尼治标准时间
服务器:Apache / 2.2.8(Win32)PHP / 5.2.6
X-Powered-By:PHP / 5.2.6
传输编码:分块
内容类型:text / html; 字符集= iso-8859-1
{“ screencast”:{“ id”:null,“ subject”:null,“ body”:null,
“ dataUrl”:null,“ dataMedium”:null,“ createdOn”:null,“ author”:null}}
Jordans关于为什么不填充$ _POST数组的分析是正确的。但是,您可以使用
$data = file_get_contents("php://input");
只是检索http正文并自己处理。
从协议的角度来看,这实际上是更正确的,因为无论如何您实际上并不是在处理http多部分表单数据。另外,在发布请求时,将application /json用作内容类型。