繁体   English   中英

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

[英]Send POST data via raw JSONwith Postman

我有 Postman(那个不能在 Chrome 中打开的),我正在尝试使用原始 JSON 执行 POST 请求。

在正文选项卡中,我选择了“原始”和带有此正文的“JSON(应用程序/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
)

那么为什么它不与 Postman 一起工作呢?


邮递员截图:

在此处输入图片说明

和标题:

在此处输入图片说明

只需从二进制旁边的下拉列表中检查 JSON 选项; 当您单击原始。 这应该做

技能 Synon 将 json 传递给邮递员

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'
});

meda 的回答完全合法,但是当我复制代码时出现错误!

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

当我手动"php://input"代码时,它起作用了。 我花了一段时间才弄清楚!

我遇到了同样的问题,以下代码对我有用:

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

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

解决方案1 您可以使用表单数据发送

解决方案2 您可以使用原始 json 数据发送

两种解决方案都运行良好。

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM