当前位置: 首页 > 知识库问答 >
问题:

在卷曲JSON时发布空

赵选
2023-03-14

我正在使用curl发送这个:

curl -i -H "Accept: application/json" -H "Content-type: application/json" -X POST -d "{firstname:james}" http://hostname/index.php

我试图在index.php中显示这样的POST。

<?php
die(var_dump($_POST)); 
?>

哪个输出

array(0) {
}

我一定是对通过POST发送JSON数据有所误解

谢谢你抽出时间

共有2个答案

龚勇锐
2023-03-14

$_post仅在发送编码表单数据时有效。您正在发送JSON,因此PHP无法将其解析到$_post数组中。

您需要直接从邮件正文中读取。

$post = fopen('php://input', r);
$data = json_decode(stream_get_contents($post));
fclose($post);
储仲渊
2023-03-14

$_POST是一个数组,只有在以URL编码格式发送POST正文时才会填充该数组。PHP本身不会自动解析JSON,因此不会填充$_post数组。您需要获取原始POST正文并自己解码JSON:

$json = file_get_contents('php://input');
$values = json_decode($json, true);
 类似资料:
  • 问题内容: 我正在尝试使用来自os x终端的curl命令在我的rails应用程序上创建用户。无论我如何格式化数据,应用程序都会返回未通过我的验证的响应。 我尝试了所有变化。我尝试使用[]括号,尝试了user = {data ..},但似乎没有任何效果。有任何想法吗? 问题答案: 首先,命令末尾有一个多余的“”。 试试这个

  • 问题内容: 我在Windows提示符下运行以下命令: 我收到以下错误: 我搜索了解决方案并找到了替代方法,例如将json数据放入文件中,但是由于某些原因,我无法使用它。 谢谢! 问题答案: Windows 不支持单引号的字符串。使用和逃避内部的。

  • 当我执行请求时 我得到以下回应 为什么会发生这种情况?我做错了什么?

  • 问题内容: 我试图通过cURL从命令提示符向远程REST API发送“ GET”请求,如下所示: 但它不返回任何输出。我尝试直接从浏览器ping URL,我能够成功获得响应,但我不知道该命令出了什么问题。 基本上,我想为远程REST服务设置一个“ GET”请求,该请求通过curl向我提供json数据作为响应。谁能指导我我在做什么错?我尝试了各种帖子,但是所有人都在谈论POST请求而不是GET。 问

  • 我正在尝试通过cURL从命令提示符向远程REST API发送“GET”请求,如下所示: 但它没有返回任何输出。我尝试直接从浏览器ping URL,我能够成功得到响应,我不明白命令有什么问题。 基本上,我想向远程REST服务设置一个“GET”请求,该服务通过curl向我提供json数据作为响应。有人能告诉我我犯了什么错误吗?我尝试了各种帖子,但都谈论POST请求,而不是GET。