如何在PHP中访问JSON POST数据?

时间:2014-01-10 18:49:44

标签: php json webhooks

我正在尝试创建webhook以将JSON编码数据发送到用户webhook接收器。

这是我发送数据的方式:

$url = 'https://www.example.com/user-webhook-receiver.php';
    $data = array('title' => 'Hello',
    'message' => 'World',
    'url' => 'http://example.com/#check');

    $content = json_encode($data);

    $curl = curl_init($url);
            curl_setopt($curl, CURLOPT_HEADER, false);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_HTTPHEADER,
                    array("Content-type: application/json"));
            curl_setopt($curl, CURLOPT_POST, true);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $content);

            $json_response = curl_exec($curl);

用户如何访问我发送给他的数据? 我试过这个,但里面没有内容:

$data = json_decode($_POST);

如何访问数据?

2 个答案:

答案 0 :(得分:0)

有关如何编码CURLOPT_POSTFIELDS的信息,请参阅this question

您需要执行以下操作:

$postdata = "content=" . urlencode($content);

在发送方面。

然后在接收方:

$content = $_POST['content']; 
$content = urldecode($content);
$json_content = json_decode($content);

虽然,我同意上面的评论,你应该发送数组。 JSON编码的重点是你在发布数据吗?

编辑:要只发送数组你会这样做:

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

(但请参阅我链接到的问题,了解有关如何使用URL编码进行更多详细信息)

在接收方,你会这样做:

$title = $_POST['title'];
$message = $_POST['message'];

答案 1 :(得分:0)

要在php中读取原始POST数据,您可以执行以下操作:

$data = file_get_contents('php://input');

也可以将关联数组直接传递给curl_setopt($curl, CURLOPT_POSTFIELDS, $content); - 如果这样做,PHP将能够自动将其转换回接收端$_POST中的数组。