curl JSON时POST为空

f0brbegy  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(75)

我使用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数据的一些事情
谢谢你的时间

rxztt3cl

rxztt3cl1#

$_POST是一个 array,只有当你以URL编码格式发送POST body时才会填充。PHP本身不会自动解析JSON,因此不会填充$_POST数组。你需要获取 raw POST body 并自己解码JSON:

$json = file_get_contents('php://input');
$values = json_decode($json, true);

字符串

kninwzqo

kninwzqo2#

$_POST只在发送编码的表单数据时才起作用。您发送的是JSON,因此PHP无法将其解析为$_POST数组。
您需要直接从POST主体读取。

$post = fopen('php://input', 'r');
$data = json_decode(stream_get_contents($post));
fclose($post);

字符串

相关问题