【问题标题】:Call Jasper report from external application through URL通过 URL 从外部应用程序调用 Jasper 报告
【发布时间】:2026-02-17 09:00:01
【问题描述】:

我的要求是, 我的 Windows 应用程序中有一个指向 jasper 服务器中的 jasper 报告的 url 我只需要我的 jasper 服务器作为查询生成器, 当我从我的应用程序(有结果)调用报告时,结果应该是使用 Web 服务的 JSON 数据。 我怎样才能实现它。 可能吗? 如果我错了,请纠正我

【问题讨论】:

    标签: json web-services jasper-reports jasperserver


    【解决方案1】:

    对于XMLJSON 中的原始数据,您可以使用JasperServer Domains 和REST Query Executor 服务

    您需要 JasperReports Server v5.1 或更高版本以及带有元数据层的版本,商业版!

    The v2/queryExecutor Service

    REST endpoint for Jaspersoft Query Executor

    摘要(仅在链接断开时有用)

    呼叫:

    {scheme}://{host}:{port}/{contextPath}/rest_v2/queryExecutor/{resourceUri}?q={queryString}
    

    {queryString} 需要采用这种格式和 url 编码(请参阅 JasperReports Server User Guide 了解更多详情

    <query>
      <queryFields>
        <queryField id="inv_store.inv_store__store_name" />
        <queryField id="inv_store.inv_store__store_type" />
        <queryField id="inv_store__store_contact.inv_store__store_contact__store_manager" />
      </queryFields>
      <queryFilterString>inv_store__region.inv_store__region__sales_state_province == 'CA'</queryFilterString>
    </query>
    

    例子

    http://localhost/jasperserver-pro/rest_v2/queryExecutor/public/Samples/Domains/supermartDomain?q=%3Cquery%3E%3CqueryFields%3E%3CqueryField+id%3D%22inv_store.inv_store__store_name%22+%2F%3E%3CqueryField+id%3D%22inv_store.inv_store__store_type%22+%2F%3E%3CqueryField+id%3D%22inv_store__store_contact.inv_store__store_contact__store_manager%22+%2F%3E%3C%2FqueryFields%3E%3CqueryFilterString%3Einv_store__region.inv_store__region__sales_state_province+%3D%3D+'CA'%3C%2FqueryFilterString%3E%3C%2Fquery%3E
    

    这将以xml 形式返回结果,要获得json 格式,请将标头“Accept: application/json” 添加到您的请求中。

    调用前的认证请参考JasperReports Server Web Service Guide

    【讨论】:

    • 谢谢,它帮助了我 Petter。如果我有一个 jasper 报告准备好在 jasper 服务器中进行查询,并且只需要调用该报告并获取 JSON 数据作为输出?(我需要这个 json 数据作为其他应用程序的数据馈送器)如何添加 JSON 导出器jasper server 6.1 中的属性。以及要遵循的示例步骤
    • 它正在工作。我所做的是,我将字段放在详细信息带中,并在每个字段中添加属性“net.sf.jasperreports.export.json.path”并部署在服务器上,以便它可用于 rest_v2 json 响应。谢谢跨度>
    【解决方案2】:

    1.将字段放在详细信息带中,并在每个字段中添加属性“net.sf.jasperreports.export.json.path” 2.在服务器上部署,以便它可以用于 rest_v2 调用

    【讨论】: