我必须为我的Jasper报告编写PHP前端代码。我可以使用jasper REST调用成功连接到服务器,验证和查看存储库。但是,当我尝试访问报告时,我在响应正文中收到以下错误:
未找到报告(未在会话中找到)
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();
我能够确认第一个PUT返回了一个uuid。这里有什么我想念的吗?任何帮助表示赞赏。
答案 0 :(得分:2)
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。
我在GitHub中有一个完整的JasperServer and PHP示例,您可以检查它,它实现了存储库浏览和输入控件呈现。 我不确定您使用的是哪个版本的JasperReports服务器,但在新版本中有一个新的REST API可以使请求报告更容易;检查JasperReports Server Web Services Guide(第3.2节)。我已经在项目的 JRS-Wrapper 分支中实现了它。
希望这会有所帮助!!
MarianoL