2014-05-05 83 views
0

首先,我沒有使用C#和Web服務。 我試圖跑在我的C#應用​​程序genereted碧玉服務器上的報告,並運行下面的代碼時,它的返回錯誤500(內部服務器錯誤):JasperServer報告問題+ C#+ Soap協議

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\">HTML</argument>"); 
sb.AppendFormat(" <resourceDescriptor name=\"\" wsType=\"\" uriString=\"/reports/samples/Accounts Report\" isNew=\"false\">"); 
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(); 

我一直在尋找互聯網上相當現在很長一段時間,沒有什麼幫助我與此...

Ps .:我有碧玉服務器運行和憑據是正確的。此外,我需要使用肥皂,而不是休息,並且必須使用C#。我已經使它與PHP一起工作,但這不是目標。

回答

0

我終於發現了什麼是錯的。 XML中缺少一個標籤。

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("<![CDATA[<request operationName=\"runReport\" locale=\"br\">"); 
sb.AppendLine("<argument name=\"RUN_OUTPUT_FORMAT\">HTML</argument>"); 
sb.AppendFormat("<resourceDescriptor name=\"Accounts Report\" wsType=\"reportUnit\" uriString=\"/reports/samples/AllAccounts\" isNew=\"false\">"); 
sb.AppendLine("</resourceDescriptor>"); 
sb.AppendLine("</request>]]>"); 
sb.AppendLine("</requestXmlString>"); 
sb.AppendLine("</q1:runReport>"); 
sb.AppendLine("</s:Body></s:Envelope>");