如何使用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 curl的版本相同)
必须有一些我错过的东西,因为它看起来非常直截了当,但是这篇文章并没有被正确地解释,如果是的话,一切都会很好。
这是我回来的:
HTTP/1.1 409 Conflict Date: Fri, 01 May 2009 22:03:00 GMT Server: Apache/2.2.8 (Win32) PHP/5.2.6 X-Powered-By: PHP/5.2.6 Transfer-Encoding: chunked Content-Type: text/html; charset=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正文并自己处理它。 请参阅PHP输入/输出流。
从协议的角度来看,这实际上是更正确的,因为无论如何你并没有真正处理http多部分表单数据。 另外,在发布请求时使用application / json作为内容类型。
通常参数-d
被解释为形式编码。 你需要-H
参数:
curl -v -H "Content-Type: application/json" -X POST -d '{"screencast":{"subject":"tools"}}'
http://localhost:3570/index.php/trainingServer/screencast.json
我相信你会得到一个空数组,因为PHP期望发布的数据是以Querystring格式(key = value&key1 = value1)。
尝试将您的卷曲请求更改为:
curl -i -X POST -d 'json={"screencast":{"subject":"tools"}}'
http://localhost:3570/index.php/trainingServer/screencast.json
看看是否有帮助。
链接地址: http://www.djcxy.com/p/8513.html