Advanced Rest Client中的数据阵列响应无效

时间:2017-02-07 16:06:37

标签: php mysql json rest

我试图建立一个" API"在PHP中可以获取JSON数据数组,将其转换为PHP数据,然后更新MySQL数据库。将数据直接发布到脚本上运行正常,就像通过cURL运行它一样,但是当使用Google Chrome" Advanced Rest Client"时,我似乎无法获得响应。应用

我收到状态:200 OK消息,但Raw / Parsed响应只读取"无效数据数组。"。

这是有问题的剧本:

<?php
$api = json_decode($_POST['api'], true);

$api['ExhibitorData'] = array_values($api['ExhibitorData']);
$data = $api['ExhibitorData'][0];
$exhibitor_id = $data['exhibitor_id'];

require_once 'config-api.php4'; // database connection

// get some data based on $exhibitor_id

$do_update = mysql_query("UPDATE table SET ... WHERE exhibitor_id = $exhibitor_id");
if (!$do_update)
{
    http_response_code(404);
    die(mysql_error());
}
$do_another_update = mysql_query("UPDATE another_table SET ... WHERE exhibitor_id = $exhibitor_id");
if (!$do_another_update)
{
    http_response_code(404);
    die(mysql_error());
}

$log = mysql_query("INSERT INTO log SET exhibitor_id = $exhibitor_id, ip_address = '" . $_SERVER['REMOTE_ADDR'] . "', updated_at = NOW()");

header('Content-Type: application/json; charset=utf-8');
echo json_encode(array(mysql_insert_id() => 'OK'));

mysql_close();

按照有关创建自己的REST API的在线教程(即this one),我似乎正在做一切正确的事情,但我似乎无法获得回复。

我还有什么要做的吗?

编辑:这是我传递给脚本的JSON字符串的结构:

{
    "ExhibitorData": {
        "1": {
            "exhibitor_id": 1,
            ...
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我设法解决了问题所在。

当您正常发布数据时,可以通过$_POST变量访问它。然而,似乎使用cURL,尽管说它POST数据,但实际上你需要以不同的方式访问它。

更改此行:

$api = json_decode($_POST['api'], true);

到此:

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

然后让脚本的其余部分运行正常。