需要使用JSON为REST v2 API传递Jasper报表参数的示例

当我查看将参数传递给Jasper Report REST 2 API的文档时:http://community.jaspersoft.com/documentation/jasperreports-server-web-services-guide/v550/running-report-asynchronously我看到我需要一个“参数”字典。 链接中的示例显示了XML并不是那么有用,因为它不清楚等效的JSON应该是什么样子。 我能找到的最近的是这个链接:http://community.jaspersoft.com/documentation/jasperreports-server-web-services-guide/v56/modifying-report-parameters。 现在,我发送了相当于服务器的数据(以及我能想到的所有其他排列方式),并且我继续收到“400客户端错误:错误请求”。 我真的可以使用Python代码的确切示例来生成“my_parameter_1 =”test_value_1“所需的”参数“参数。

这是我目前的POST数据(为了简洁,缺少一些参数)。 我知道这是正确的,因为如果省略“参数”参数,报告可以正常工作:

    {
      'outputFormat': 'pdf', 
      'parameters': [{'name': 'ReportID', 'value': ['my_value_1']}], 
      'async': 'true', 
      'pages': '', 
      'interactive': 'false'
    }

那里有好的工作Staggart。 我现在明白了。 因为我没有阅读max。 仔细看,我浪费了一些额外的时间。 因此,感兴趣的编码器不仅建议了解嵌套的,语法上有趣的reportParameter属性,而且还特别指出其中的值属性是一个数组。 我想可以在这里传递某种形式的列表/数组/集合?

让我恼火的是,如果我应该构造多个“reportParameter”属性,但根据JSON语法是否允许对象中存在重复键,这将是无稽之谈。

所以只是为了记录,如何发布多个参数:

{
    "reportUnitUri": "/reports/Top10/Top10Customers",
    "async": true,
    "freshData": true,
    "saveDataSnapshot": false,
    "outputFormat": "pdf",
    "interactive": false,
    "ignorePagination": true,
    "parameters": {
        "reportParameter": [
            {
                "name": "DATE_START_STRING",
                "value": ["14.07.2014"]
            },
            {
                "name": "DATE_END_STRING",
                "value": ["14.10.2014"]
            }
        ]
    }
}

如果有人意外地在通过REST和PHP与碧玉沟通挣扎。 帮你一个忙,并使用PHP的请求而不是纯粹的CURL。 它甚至有内部使用套接字而不是CURL的后备,当后者不可用时。

Upvote为你Staggart。


好的,感谢rafkacz1 @ http://community.jaspersoft.com/questions/825719/json-equivalent-xml-post-reportexecutions-rest-service谁发布了答案,我想通了。 当他在那里报告时,所需的格式是:

    "parameters":{
         "reportParameter":[
             {"name":"my_parameter_1","value":["my_value_1"]}
          ]
     }

要特别注意多个“ reportParameter ”。


下面是使用Rest V2生成报告的完整示例,在我的案例中它运行在C#上:

try {
    var server = "http://localhost:8080/jasperserver";
    var login = server + "/rest/login";
    var report = "/rest_v2/reports/organization/Reports/report_name.pdf";
    var client = new WebClient();

    //Set the content type of the request
    client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";

    //Set the username and password
    NameValueCollection parametros = new NameValueCollection();
    parametros.Add("j_username", "jasperadmin");
    parametros.Add("j_password", "123456");

    //Request to login
    client.UploadValues(login, "POST", parametros);

    //Get session cookie
    string session = client.ResponseHeaders.Get("Set-Cookie");

    //Set session cookie to the next request
    client.Headers.Add("Cookie", session);

    //Generate report with parameters: "start" and "end"
    var reporte = client.DownloadData(server + report + "?start=2015-10-01&end=2015-10-10");

    //Returns the report as response
    return File(reporte, "application/pdf", "test.pdf");
}catch(WebException e){
    //return Content("There was a problem, status code: " + ((HttpWebResponse)e.Response).StatusCode);
    return null;
}
链接地址: http://www.djcxy.com/p/37833.html

上一篇: Need Example of passing Jasper Reports Parameters for REST v2 API using JSON

下一篇: JSON.Net throws StackOverflowException when using [JsonConvert()]