【问题标题】:Jasper Rest API, run a reportJasper Rest API,运行报告
【发布时间】:2012-03-02 17:54:06
【问题描述】:

感谢 Jasper Rest API,我目前正在尝试运行报告并获取输出 (PDF),文档的有趣部分是 here

所以我尝试了这个:http://localhost:8080/jasperserver/rest/report/reports/samples/report_mongodb_new_basic

知道我的报告在报告/样本中,其资源 ID 为:report_mongodb_new_basic

所以我仍然尝试使用 nodejs 运行它,这是我的代码: (请求是一个可用的nodejs模块here

登录:

var request = require("request");   
request.post({url: "http://localhost:8080/jasperserver/rest/login", 
qs: {j_username: "jasperadmin", j_password: "jasperadmin"}},
function(err, res, body) {
    if(err) {
        return console.error(err);
    }

登录后,如文档所示,我需要执行 PUT 请求来运行报告:

     request.put("http://localhost:8080/jasperserver/rest
     /report/reports/samples/report_mongodb_new_basic")

这当然是行不通的,即使我直接在这个网址上使用 火狐,上面写着

"Report not found (uuid not found in session)"

由于这个 PUT 请求应该创建 uuid

那么,获取 uuid 并在可能的情况下使用 get 获取 pdf 的 URL 的良好语法和 PUT 请求的良好语法是什么?

【问题讨论】:

  • 您是否在第一个请求回调的正文中发出request.put 调用?
  • 老实说,我不知道回调是什么,但我想你会问我是否将request.put 放在request.post 中(就像这样:request.post(.... request.put() ) 答案是肯定的,但是没有改变任何东西,我认为我的问题出在 URL 上
  • 我现在知道什么是回调,是的,我在第一个请求回调的主体中调用 request.put

标签: node.js rest report jasperserver


【解决方案1】:

jonny 提供了正确的答案。但这里有一个更简单的方法,使用 REST_v2 接口,允许您在单个请求中运行并获取报告输出:

        request.get("http://localhost:8080/jasperserver/rest_v2/reports/samples/report_mongodb_new_basic.pdf")

这在web services documentation 的第 3.2.1 节中有描述。

【讨论】:

  • 嗨@lionel 我是jasper 和node js 的新手。我想从节点服务器调用碧玉报告。当我尝试您的代码时,我收到 401 未经授权的错误。有什么帮助吗?
  • 这不是 Jasper 的特定错误,这是一个身份验证问题。您应该记录自己有关此 HTTP 错误的信息并尝试在全局范围内解决它。
  • 如何指定上报路径?是绝对的吗?
【解决方案2】:

最近遇到同样的问题。

登录后运行 PUT 之前,你应该运行 GET 请求

http://localhost:8080/jasperserver/rest/report/reports/samples/report_mongodb_new_basic

答案正文是资源描述符

 <resourceDescriptor>
 ... 
 </resourceDescriptor>

那么您应该运行您的 PUT 请求请求正文设置为 resourceDescriptor

您可以将报告参数添加到报告单位定义中。事实上,我使用 XMLRemoteDatasource 来获取我的数据 所以我给report_unit添加了一个参数

  ...
    <parameter name="XML_URL" class="java.lang.String">
        <![CDATA[http://$ENV{HTTP_HOST}/some_url]]>
    </parameter>
</resourceDescriptor>

这对Jasper Server 4.5 Community Edition有帮助

【讨论】:

  • GET 请求给出未找到报告(在会话中未找到 uuid)。我们缺少什么?
【解决方案3】:

在 Jasper 中获取报告的完整脚本示例,但在 Ruby 中 http://www.redrails.com.br/2013/03/07/ruby-client-para-rest-api-do-jasper-report-server/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    相关资源
    最近更新 更多