I am able to send a report request, passing in json as a report input control. I get the response back as json, with the applicable request and export IDs. I go to poll the requestExecution service for the status of the request and it throws a 404 error that the request ID is not found. What am I missing? Csharp code below...
using Newtonsoft.Json.Linq; using System; using System.Diagnostics; using System.Net; namespace JasperReportsClient { class Program { static void Main(string[] args) { WebClient client = new WebClient(); CredentialCache creds = new CredentialCache(); creds.Add(new Uri("http://<Hostname>:8080/"), "Basic", new NetworkCredential("admin", "admin")); client.Credentials = creds; string data = Uri.EscapeDataString("[{\"CustNum\":\" 2\",\"CustSeq\":\"0\",\"Name\":\"Coordinated Bicycles - North\"}]"); string request = "{\"reportUnitUri\":\"/Reports/CustomerReport\",\"async\":true,\"freshData\":true," + "\"saveDataSnapshot\":false,\"outputFormat\":\"pdf\",\"interactive\":false,\"ignorePagination\":true," + "\"pages\":null,\"parameters\":{\"reportParameter\":[{\"name\":\"jsonString\",\"value\":[\"" + data + "\"]}]}}"; WebHeaderCollection headers = new WebHeaderCollection(); headers.Add("Content-Type:application/json"); headers.Add("accept:application/json"); client.Headers = headers; string response = ""; response = client.UploadString("http://<Hostname>:8080/jasperserver/rest_v2/reportExecutions", request); JObject responseAsJsonObject = JObject.Parse(response); string requestId = responseAsJsonObject["requestId"].ToString(); string exportId = responseAsJsonObject["exports"][0]["id"].ToString(); string requestStatus = responseAsJsonObject["status"].ToString(); Debug.WriteLine("Request ID: " + requestId); Debug.WriteLine("Export ID: " + exportId); Debug.WriteLine("Request Status: " + requestStatus); while(requestStatus == "queued") { response = null; response = client.DownloadString("http://<Hostname:8080/jasperserver/rest_v2/reportExecutions/" + Uri.EscapeDataString(requestId) + "/status"); responseAsJsonObject = null; responseAsJsonObject = JObject.Parse(response); requestStatus = null; requestStatus = responseAsJsonObject["value"].ToString(); Debug.WriteLine("Request Status: " + requestStatus); } if(requestStatus == "ready") { string ReportOutputPath = @"\\<Hostname>\<ReportOutputDirectory>\"; string ReportOutputFile = "CustomerReport - " + DateTime.Now.ToString("yyyyMMdd_HHmmssff") + ".pdf"; client.DownloadFile("http://<Hostname>:8080/jasperserver/rest_v2/reportExecutions/" + Uri.EscapeDataString(requestId) + "/exports/" + Uri.EscapeDataString(exportId) + "/outputResource", ReportOutputPath + ReportOutputFile); Process.Start(ReportOutputPath + ReportOutputFile); } client.Dispose(); } } }
0 Answers:
No answers yet