Jasper Reports是Crystal Reports的一個極好的開源替代品。對於單頁PDF頁面來說非常好,例如字母&發票到多頁報表。然而,它並不是非常適合.NET,並且讓C#/ Mono與JasperServer一起玩起來並不是很有成果。從C#運行JasperServer報告#
是否有人有任何代碼示例如何從C#運行JasperServer的報告,並附帶一個XML數據集與SOAP請求?它需要在Mono上工作,所以Microsoft.Web.Services2是不可能的。
我已經嘗試推出我自己的肥皂請求。賈斯珀服務器似乎接受它,但我似乎不能得到任何迴應,而不是服務器500錯誤。我沒有附加MTOM附件。
var sb = new StringBuilder();
sb.AppendLine("<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">");
sb.AppendLine("<s:Body s:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">");
sb.AppendLine("<q1:runReport xmlns:q1=\"http://axis2.ws.jasperserver.jaspersoft.com\">");
sb.AppendLine("<requestXmlString xsi:type=\"xsd:string\">");
sb.AppendLine("<request operationName=\"runReport\" locale=\"en\">");
sb.AppendLine(" <argument name=\"RUN_OUTPUT_FORMAT\">PDF</argument>");
sb.AppendFormat(" <resourceDescriptor name=\"\" wsType=\"\" uriString=\"{0}\" isNew=\"false\">", "/JourneyReport");
sb.AppendLine(" <label>null</label>");
sb.AppendLine(" <parameter name=\"testparam\">1</parameter>");
sb.AppendLine(" </resourceDescriptor>");
sb.AppendLine(" </request>");
sb.AppendLine("</requestXmlString>");
sb.AppendLine("</q1:runReport>");
sb.AppendLine("</s:Body></s:Envelope>");
var webRequest = (HttpWebRequest)WebRequest.Create("http://localhost:8080/jasperserver/services/repository");
webRequest.Credentials = new NetworkCredential("jasperadmin","jasperadmin");
webRequest.PreAuthenticate = true;
webRequest.Headers.Add("SOAPAction","");
//Set HttpWebRequest properties
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
webRequest.Method = "POST";
webRequest.ContentLength = bytes.Length;
webRequest.ContentType = "text/xml; encoding='utf-8'";
//Get Stream object
var objRequestStream = webRequest.GetRequestStream();
objRequestStream.Write(bytes, 0, bytes.Length);
objRequestStream.Close();
var response = (HttpWebResponse)webRequest.GetResponse();
可能需要幫助的這篇文章可以幫助你:http://stackoverflow.com/questions/4351511/upload-report-unit-via-webservice-in-c-sharp-net to-jasperserver –
謝謝,但它不適用於Mono。我將不得不查看是否可以找到不同的SOAP庫,或者手動執行。 – FlappySocks
是一個商業組件的選項? – Yahia