使用 Postman 通过原始 JSON 发送 POST 数据

我已经得到了 Postman (在 Chrome 中不打开的那个) ,并且正在尝试使用原始 JSON 执行一个 POST 请求。

在 Body 选项卡中,我选择了“ raw”和“ JSON (application/JSON)”作为主体:

{
"foo": "bar"
}

对于头部我有1,Content-Type: application/json

在 PHP 方面,我现在只使用 print_r($_POST);,得到的是一个空数组。


如果我使用 jQuery 并执行以下操作:

$.ajax({
"type": "POST",
"url": "/rest/index.php",
"data": {
"foo": "bar"
}
}).done(function (d) {
console.log(d);
});

正如我所料:

Array
(
[foo] => bar
)

那为什么不和邮差合作呢?


邮递员截图:

enter image description here

标题:

enter image description here

453887 次浏览

jQuery不同,要读取原始 JSON,您需要用 PHP 对其进行解码。

print_r(json_decode(file_get_contents("php://input"), true));

php://input是一个只读流,允许您从请求体中读取原始数据。

$_POST是形式变量,你需要在 postman中切换到 form单选按钮,然后使用:

foo=bar&foo2=bar2

jquery张贴原始 json:

$.ajax({
"url": "/rest/index.php",
'data': JSON.stringify({foo:'bar'}),
'type': 'POST',
'contentType': 'application/json'
});

我也面临着同样的问题,下面的代码对我很有用:

$params = (array) json_decode(file_get_contents('php://input'), TRUE);
print_r($params);

Meda 的答案是完全合法的,但是当我复制代码时,我得到了一个错误!

"php://input"的某个地方有一个无效的字符(可能是引号之一?)。

当我手动输入 "php://input"代码时,它工作了。 我花了好久才想明白!

安装 Postman 本地应用程序,Chrome 扩展已被否决。 (我的在自己的窗口中打开,但仍然作为 Chrome 应用程序运行)

只需要从二进制文件旁边的下拉列表中选择 JSON 选项; 当您单击 raw 时,就可以做到这一点

skill synon pass json to postman

解决方案1 You can send using form-data

解决方案2 You can send using raw json data

两种解决方案都非常有效。

谢谢