如何使用curl将JSON发布到PHP

我可能会偏离基础,但我一直在尝试整个下午在这个凹陷的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.6

X-Powered-By:PHP / 5.2.6

转移编码:分块

内容类型:text / html; 字符集= ISO-8859-1


{ “抓屏”:{ “ID”:空, “主题”:空, “身体”:空,

         “dataUrl”:空, “dataMedium”:空, “createdOn”:空, “作者”:空}}


桃花长相依
浏览 389回答 3
3回答

万千封印

Jordans分析为什么没有填充$ _POST-数组是正确的。但是,你可以使用$data = file_get_contents("php://input");只需检索http正文并自行处理。请参阅PHP输入/输出流。从协议的角度来看,这实际上更加正确,因为无论如何你还没有真正处理http多部分表单数据。另外,在发布请求时使用application / json作为内容类型。

慕勒3428872

通常,该参数-d被解释为表格编码。你需要-H参数:curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}' \http://localhost:3570/index.php/trainingServer/screencast.json

Helenr

我相信你得到一个空数组,因为PHP期望发布的数据采用Querystring格式(key = value&key1 = value1)。尝试将您的curl请求更改为:curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}'  \      http://localhost:3570/index.php/trainingServer/screencast.json并看看这是否有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP