2013-02-20 28 views
1

我必須爲Jasper報告編寫一個PHP前端。我可以成功連接到服務器,使用jasper REST調用來認證和查看存儲庫。然而,當我試圖訪問一個報告,我得到以下錯誤的響應正文:jasper Rest客戶端 - 在會話中找不到uuid

報告未找到(UUID不是在會議中找到)

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

我能夠確認一個uuid與第一個PUT一起返回。有什麼我在這裏失蹤?任何幫助表示讚賞。

回答

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

+0

我最終使用rest_v2方法在一個步驟中請求報告。我也認爲這與會議有關。謝謝你的鏈接。我會通過它。 – janenz00 2013-02-23 03:25:52

+0

rest_v2方法的外觀如何? – zygimantus 2016-10-04 08:35:33