Клиент jasper Rest - uuid не найден в сеансе

Я должен написать PHP-интерфейс для моих отчетов Jasper. Я мог бы успешно подключиться к серверу, аутентифицировать и просматривать репозитории с помощью вызовов REST jasper. Однако, когда я пытаюсь получить доступ к отчету, я получаю следующую ошибку в теле ответа:

Отчет не найден (uuid не найден в сеансе)

Код php приведен ниже:

   $uri = "http://localhost:8080/jasperserver/rest/report/samples/Client_Information_Report?RUN_OUTPUT_FORMAT=html";

    //PUT request to run the report
    $response = Httpful\Request::put($uri, $payload)
    ->authenticateWith("jasperadmin", "jasperadmin")
    ->send();

    $xml = new SimpleXMLElement($response->body);
    $uuid = (String)$xml->uuid; //The uuid is successfully returned

    $uri = "http://localhost:8080/jasperserver/rest/report/$uuid?file=report";
    $report = Httpful\Request::get($uri)
              ->authenticateWith("jasperadmin", "jasperadmin")
              ->send();

Я могу подтвердить, что uuid возвращается с первым PUT. Есть ли что-то, что я здесь скучаю? Любая помощь приветствуется.

1 ответ

Решение

Janenz,

Сначала проверьте информацию, которая приходит из ответа PUT, чтобы увидеть, есть ли на самом деле генерируемый отчет, и он не пустой, вы должны получить что-то вроде этого:

<report>
    <uuid>d7bf6c9-9077-41f7-a2d4-8682e74b637e</uuid>
    <originalUri>/reports/samples/AllAccounts</originalUri>
    <totalPages>43</totalPages>
    <startPage>1</startPage>
    <endPage>43</endPage>
    <file type="image/png">img_0_0_0</file>
    <file type="image/gif">px</file>
    <file type="text/html">report</file>
    <file type="image/jpeg">img_0_42_27</file>
    <file type="image/png">img_0_42_26</file>
</report>

Обратите внимание на количество страниц и доступных файлов.

Я не использовал библиотеку Httpful, но еще одна вещь, которую нужно проверить, - это то, как библиотека использует базовую аутентификацию. Может случиться, что второй вызов снова регистрирует вас и создает новый сеанс; Вот почему вы не можете найти UUID текущего сеанса.

У меня есть полный пример JasperServer и PHP в GitHub, который вы можете проверить, в нем реализован просмотр хранилища и визуализация управления вводом. Я не уверен, какую версию JasperReports Server вы используете, но в новой версии появился новый REST API, который значительно упрощает запрос отчетов; проверьте Руководство по веб-службам сервера JasperReports (раздел 3.2). Я реализовал это в JRS-Wrapper Branch моего проекта.

Надеюсь это поможет!!

MarianoL

Другие вопросы по тегам