Obtenir un rapport de jasperserver en utilisant le service web REST et asp.net C #
Vous pouvez utiliser le jasperservers webservices (SOAP et REST est disponible) pour obtenir la gale et exécuter des rapports à partir d'une application web. Le SOAP wsdl n'est pas compatible avec asp.net c# (au moins, je ne peux pas le faire fonctionner), j'ai donc décidé d'utiliser le RESTE webservice.
Je suis PRESQUE là, mais je ne peux pas récupérer le rapport lui-même. personne ne sait ce qui va mal?
Je suis à l'aide de jasperserver CE 4.5 sur Linux.
//Setup WebClient
WebClient httpclient = new WebClient();
//Basic Auth
httpclient.Credentials = new NetworkCredential("NAME", "PASSWD");
httpclient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
//Build resourceDescriptor
string requestXml;
requestXml = "<resourceDescriptor name="budget_overzicht_per_klant" wsType="reportUnit" uriString="/Declaraties/12change/Klant/budget_overzicht_per_klant"n";
requestXml += " isNew="false">n";
requestXml += " <label>null</label>n";
requestXml += " <parameter name="klantid">14</parameter>n";
requestXml += " <parameter name="start">20120101</parameter>n";
requestXml += " <parameter name="eind">20120302'</parameter>n";
requestXml += " <parameter name="Titel">Test 123</parameter>n";
requestXml += "</resourceDescriptor>n";
//Send PUT
string requestAllResult = httpclient.UploadString("http://website/jasperserver/rest/report/Declaraties/12change/Klant/budget_overzicht_per_klant?RUN_OUTPUT_FORMAT=PDF", "PUT", requestXml);
//requestAllResult contains:
//<report>
// <uuid>f521fe7d-7432-4c47-962c-9fec29bdaa43</uuid>
// <originalUri>/Declaraties/12change/Klant/budget_overzicht_per_klant</originalUri>
// <totalPages>4</totalPages>
// <startPage>1</startPage>
// <endPage>4</endPage>
// <file type="application/pdf"><![CDATA[report]]></file>
//</report>
//You have to use the uuid to GET the file 'report'
//
//Extract uuid, filename is always report
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(requestAllResult);
XmlNode node = doc.DocumentElement.SelectSingleNode("uuid");
string uuid = node.InnerText;
//Build GET URL
string reportUrl = "http://website/jasperserver/rest/report/";
reportUrl += uuid;
reportUrl += "?file=report";
//the value of report Url is now
//"http://website/jasperserver/rest/report/f521fe7d-7432-4c47-962c-9fec29bdaa43?file=report"
//Get report
string report;
report = httpclient.DownloadString(reportUrl);
//Exception, HTTP 404 ERROR????
L'erreur semble signifier que l'uuid n'est pas dans la session en cours. Quelqu'un at-il ce travail? Merci!
source d'informationauteur torinfo
Vous devez vous connecter pour publier un commentaire.
Je vais répondre à ma propre question:
Le METTRE retourne un Cookie dans l'en-tête de réponse, que vous devez utiliser dans la suite de l'OBTENIR:
Et c'est tout!
Mec merci beaucoup, cela a été la plus utile de post que j'ai trouvé sur l'obtention de rapports de JasperServer via le REPOS, et je suis en utilisant Ruby on Rails. Après la mise à niveau de JS 5.0 j'ai trouvé l'interface SOAP très peu fiable, fondamentalement, il fallait frapper deux fois pour le rapport à générer. Je n'avais aucun succès avec les rest_v2 de l'interface, il ne semblait jamais à l'honneur tous les paramètres transmis.
J'ai donc essayé l'ancienne RESTE de l'interface et sa fonctionne très bien. Pour toute Rails les gars, voici mon (légèrement sale) de la console de code.