2016-04-26 4 views
0

Я пытаюсь в конечном счете запустить и отобразить отчеты с удаленного сервера Jasper в приложении PHP. Я пытаюсь сделать это с помощью проекта jrs-rest-php-client на github.Ошибка API-интерфейса PHP JasperReports

Ошибка:

Fatal error: Uncaught exception 'Jaspersoft\Exception\RESTRequestException' with message 'An unexpected HTTP status code was returned by the server' in C:\xampp\htdocs\jrs\vendor\src\Jaspersoft\Tool\RESTRequest.php:409 
Stack trace: 
#0 C:\xampp\htdocs\jrs\vendor\src\Jaspersoft\Tool\RESTRequest.php(479): Jaspersoft\Tool\RESTRequest->handleError(0, Array, false) 
#1 C:\xampp\htdocs\jrs\vendor\src\Jaspersoft\Service\ReportService.php(40): Jaspersoft\Tool\RESTRequest->prepAndSend('https://jasper....', Array, 'GET', NULL, true) 
#2 C:\xampp\htdocs\jrs\report.php(30): Jaspersoft\Service\ReportService->runReport('/Reports/Distri...', 'html') 
#3 {main} thrown in C:\xampp\htdocs\jrs\vendor\src\Jaspersoft\Tool\RESTRequest.php on line 409 

Мой PHP:

require_once __DIR__ . "/vendor/autoload.php"; 
use Jaspersoft\Client\Client; 
$d = new Client(
    "http://jasper.server.com/jasperserver-pro", 
    "username", 
    "password", 
    "organization" 
); 
$info = $d->serverInfo(); 

Любые идеи?

ответ

1

Глядя в код RESTRequest.php существуют два случая, в которых это исключение:

  • JSON набор результатов с неизвестным кодом ошибки возвращается (неизвестное значение, отличное от 200 OK)
  • Нет Итоговый набор JSON возвращается вообще

Поэтому я подозреваю, что соединение работает неправильно. Чтобы узнать больше, вы должны поймать исключение в коде и оценить его:

Это может выглядеть примерно так (я больше знаком с Java):

try { 
    $d = new Client(
     "http://jasper.server.com/jasperserver-pro", 
     "username", 
     "password", 
     "organization" 
    ); 

    $info = $d->serverInfo(); 

} catch (RESTRequestException $e) { 
    echo 'RESTRequestException:'; 
    echo 'Exception message: ', $e->getMessage(), "\n"; 
    echo 'Set parameters:  ', $e->parameters, "\n"; 
    echo 'Expected status code:', $e->expectedStatusCodes, "\n"; 
    echo 'Error code:   ', $e->errorCode, "\n"; 
} 

Если есть еще ошибка , вы можете проверить следующее:

  • Можете ли вы связаться с сервером яшмы с сервера, где этот код развернут? Иногда, например, настройки брандмауэра могут мешать.
  • Является ли организация названной так же, как определено в свойствах организации на сервере? (Открыть репозиторий/щелкните правой кнопкой мыши по организации/свойствам/ресурс-id)
Смежные вопросы