1

Получение тела JSON в PHP

Тема: Получение тела JSON в PHP

Всем доброго времени суток!

Занялся разработкой личного кабинета для наших клиентов и сотрудников. Столкнулся с одной проблемой. JSON через API получил, а перенести в массивы PHP не получается.

Запрос к API:
$ch = curl_init('https://hst-api.wialon.com/wialon/ajax.html?svc=token/login&params={"token":""}');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$json);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_exec($ch);
curl_close($ch);

Попытка получение данных в PHP:
$data = file_get_contents('php://input');
$data = json_decode($data, true);


Подскажите в чём я ошибаюсь и в правильном ли направлении иду?

2

Получение тела JSON в PHP

Re: Получение тела JSON в PHP

Добрый день!

Первый попавшийся рабочий пример (выводит кастом филды). Чтобы всё заработало, подставьте свой token и unitId

<?
    $url = 'https://hst-api.wialon.com:443';
    $token = '';
    $unitId = 1111111;

    // login request
    $params = array(
        'token' => $token
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url.'/wialon/ajax.html?svc=token/login');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'params='.json_encode($params));
    $out = curl_exec($ch);
    curl_close($ch);
    $out = json_decode($out, true);

    if (isset($out['error'])) {
        echo 'Invalid login ';
        print_r($out);
        exit();
    }

    $sid = $out['eid'];

    // search item by id
    $params = array(
        'id' => $unitId,
        // 0x8 + 0x1, see https://sdk.wialon.com/wiki/ru/sidebar/remoteapi/apiref/format/unit#proizvolnye_polja
        'flags' => 0x8
    );

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url.'/wialon/ajax.html?svc=core/search_item&sid='.$sid);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'params='.json_encode($params));
    $out = curl_exec($ch);
    curl_close($ch);
    $out = json_decode($out, true);

    // TODO: check for error

    // get custom fields
    $customFields = $out['item']['flds'];
    foreach ($customFields as $id => $field) {
        $name = $field['n'];
        $value = $field['v'];

        if ($name == 'Имя') {
            // Искомое произвольное поле
            echo "<p><b>$name - $value</b></p>";
        } else {
            echo "<p>$name - $value</p>";
        }
    }
?>
3

Получение тела JSON в PHP

Re: Получение тела JSON в PHP

Большое спасибо за помощь!