需要使用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()]