0

我正在从命令行(Ubuntu)发送 POST 请求:

echo -n '{"prop":"value"}' | POST -c -U "application/json" http://site.com/test

服务器脚本输出它的 $_POST:

<?php 
  var_dump ($_POST);
?>

我在输出中看到:Content-Length: 16,但作为服务器的响应,我得到

array(0){
}

我错在哪里了?

4

1 回答 1

3

$_POST包含作为普通表单数据提交的数据的键值对。因为您发送了 JSON 数据,所以它的解析方式不同。

您需要检索请求正文。您可以使用http_get_request_body()或将正文视为文件,使用fopen('php://input'). 阅读请求正文后,您可以使用json_decode()它来解析它。

$x = json_decode(http_get_request_body());

看:

于 2012-11-05T17:25:14.177 回答