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)
我试图最终 运行 并在 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)