我使用的是jasperserverrest\uv2web服务。我使用python中的requests模块来访问api。jasper服务器上的报告正在执行,并且 报表url如下:
http://localhost:8080/jasperserver/rest_v2/reportExecutions
我得到了这样一个json响应:
{
"status": "ready",
"totalPages": 0,
"requestId": "d0ae905c-1538-4e40-b5ad-c145f521707c",
"reportURI": "/reports/Invoices/COD",
"exports": [
{
"id": "49f47112-4698-4398-9ed8-a62d552a7aa5",
"status": "ready",
"outputResource": {
"contentType": "application/pdf",
"fileName": "COD.pdf",
"outputFinal": true
}
}
]
}
这意味着我的报告被执行了。在
然后我点击下面的url下载报告输出。在
它用404状态代码给出以下响应:
^{pr2}$然后我使用以下url检查我的报告状态:
http://localhost:8080/jasperserver/rest_v2/reportExecutions/d0ae905c-1538-4e40-b5ad-c145f521707c
我收到一个404响应,并遵循json:
{
"message": "Resource d0ae905c-1538-4e40-b5ad-c145f521707c not found.",
"errorCode": "resource.not.found",
"parameters": [
"d0ae905c-1538-4e40-b5ad-c145f521707c"
]
}
同样的事情也可以用邮递员。 注意:我正在传递有效的凭证和适当的标头。在
以下是我对此的django观点:
class JasperView(View):
template = "report.html"
def get_token(self):
username = "zeeshan"
password = "zeeshan"
token = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
return token
def get(self, request, *args, **kwargs):
return render(request, self.template)
def post(self, request, *args, **kwargs):
token = self.get_token()
data = """
<reportExecutionRequest>
<reportUnitUri>/reports/Invoices/COD</reportUnitUri>
<async>false</async>
<freshData>false</freshData>
<saveDataSnapshot>false</saveDataSnapshot>
<outputFormat>pdf</outputFormat>
<interactive>true</interactive>
<ignorePagination>false</ignorePagination>
<parameters>
<reportParameter name="StartDate">
<value>2016-06-08 00:00:00</value>
</reportParameter>
<reportParameter name="EndDate">
<value>2016-07-01 00:00:00</value>
</reportParameter>
<reportParameter name="ReportID">
<value>COD2345</value>
</reportParameter>
<reportParameter name="client">
<value>Fetchr</value>
</reportParameter>
<reportParameter name="manager">
<value>Zeeshan Asgar</value>
</reportParameter>
<reportParameter name="client_add">
<value>Near Bhagat Singh Park, Malviya Nagar, New Delhi-110017</value>
</reportParameter>
</parameters>
</reportExecutionRequest>
"""
response = requests.post(url="http://localhost:8080/jasperserver/rest_v2/reportExecutions",
headers={
"Authorization": "Basic " + token,
"Accept": "application/json",
"Content-Type": "application/xml",
},
data=data)
data = response.json()
request_id = data.get("requestId")
export_id = data.get("exports")[0].get("id")
report_url = "http://localhost:8080/jasperserver/rest_v2/reportExecutions/{request_id}/exports/{export_id}/outputResource".format(
request_id=request_id, export_id=export_id)
report_resp = requests.get(url=report_url,
headers={"Authorization": "Basic " + token, "Content-Type": "application/xml"})
response = HttpResponse(content_type='application/pdf')
response['Content-Disposition'] = 'attachment; filename="COD.pdf"'
response.write(report_resp)
return response
救命啊。在
提前谢谢。在
目前没有回答
相关问题 更多 >
编程相关推荐