jasper Rest客户端-在会话中找不到uuid



我必须为我的Jasper报告编写一个PHP前端。我可以使用jasper REST调用成功地连接到服务器、验证和查看存储库。然而,当我试图访问报告时,我在响应体中得到以下错误:

找不到报告(会话中找不到uuid)

php代码如下:

   $uri = "http://localhost:8080/jasperserver/rest/report/samples/Client_Information_Report?RUN_OUTPUT_FORMAT=html";
    //PUT request to run the report
    $response = HttpfulRequest::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 = HttpfulRequest::get($uri)
              ->authenticateWith("jasperadmin", "jasperadmin")
              ->send();

我能够确认uuid与第一个PUT一起返回。这里有我遗漏的东西吗?感谢您的帮助。

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和PHP示例,您可以查看,它实现了存储库浏览和输入控制渲染。我不确定您使用的是哪种版本的JasperReportsServer,但在新版本中有一个新的RESTneneneba API,它使请求报告变得更加容易;查看JasperReports服务器Web服务指南(第3.2节)。我在项目的JRS Wrapper分支中实现了该指南。

希望这能有所帮助!!

MarianoL

相关内容

  • 没有找到相关文章