接收JSON POST请求

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

坦白说,我不明白我是如何获取这些数据的,因为没有设置任何参数。
有什么想法吗?

是的,非常抱歉。在发布之前我确实进行了搜索,但是没有找到任何相关信息。我不知道如何搜索这个问题。 - fred00
我不会因此感到太糟糕,有时候我也找不到我知道标题的stackoverflow答案,包括我的问题 :) - Maarten Bodewes
2个回答

18

在PHP中尝试以下代码(当请求为application/json时,$_POST中将无法获取数据)

var_dump(json_decode(file_get_contents("php://input")));

你救了我的命! :D - Juan Manuel Masud

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接