为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用curl将JSON发布到PHP

如何使用curl将JSON发布到PHP

PHP
桃花长相依 2019-08-30 16:12:42
我可能会偏离基础,但我一直在尝试整个下午在这个凹陷的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作为内容类型。


查看完整回答
反对 回复 2019-08-30
?
慕勒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


查看完整回答
反对 回复 2019-08-30
?
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

并看看这是否有帮助。


查看完整回答
反对 回复 2019-08-30
  • 3 回答
  • 0 关注
  • 388 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信