PHP JasperReports 服务器 API 错误

PHP JasperReports Server API Error

我试图最终 运行 并在 PHP 应用程序中显示来自远程 Jasper 服务器的报告。我正在尝试使用 github 上的 jrs-rest-php-client 项目。

错误:

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();

有什么想法吗?

查看 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";
}

如果还是报错,可以检查以下:

  • 你能从部署这段代码的服务器到达jasper服务器吗?有时,例如防火墙设置可能会干扰。
  • 调用的组织是否与服务器中组织属性中定义的完全一致? (打开存储库/右键单击组织/属性/资源ID)