unitedsecurity
Рабочий скрипт PHP + curl, перед использованием надо поправить $url, $token и $params перед exec_report
<?
    $url = 'https://hst-api.wialon.com';
    $token = '<TOKEN>';
    $filename = 'new.pdf';
    // login request
    $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={"token":'.$token.'}');
    $out = curl_exec($ch);
    curl_close($ch);
    $out = json_decode($out, true);
    $sid = $out['eid'];
    // exec report
    $params = array(
        reportResourceId=>515,
        reportTemplateId=>1,
        reportObjectId=>520,
        reportObjectSecId=>0,
        interval=>array(
            from=>1450501520,
            to=>1453279920,
            flags=>0x00
        )
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url.'/wialon/ajax.html?svc=report/exec_report&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);
    // export result
    $params = array(
        format=>2,
        outputFileName=>$filename,
        compress=>0
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url.'/wialon/ajax.html?svc=report/export_result&sid='.$sid);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, 'params='.json_encode($params));
    $result = curl_exec($ch);
    $headers = curl_getinfo($ch);
    curl_close($ch);
    header('Content-type: '.$headers['content_type']);
    header('Content-Disposition: attachment; filename="'.$filename.'"');
    header('Content-Length: '.strlen($result));
    echo $result;
?>