4

可能重复:
如何在 php 中获取 POST 的正文?

我收到一个包含 JSON 的 POST,问题是当我收到 $_POST 为空时。为了测试我何时收到 POST,我创建了一个包含 $_POST、$_GET 和 $_REQUEST 的文件,它们都是空的。

发送请求的客户端正在执行以下操作:

$itemJson = '{
      "id": 00,
      "value": "ok"
    }';

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: '. strlen($itemJson))
    );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
    curl_setopt($ch, CURLOPT_POSTFIELDS, $itemJson);
    curl_close($ch);

老实说,我不明白我是如何获得这些数据的,因为没有参数集。

有任何想法吗?

4

2 回答 2

18

在 PHP 中尝试如下(当请求是应用程序/json 时,您不会将数据放入 $_POST)

var_dump(json_decode(file_get_contents("php://input")));
于 2012-10-24T13:58:02.923 回答
5

尝试

$request_body = file_get_contents('php://input');
$json = json_decode($request_body);

在您的接收脚本中。

另见:http ://docs.php.net/wrappers.php.php

于 2012-10-24T13:58:09.937 回答