2012-08-31 47 views
0

我們迷上了我們的應用程序,從報告解析XML並將其顯示在自定義表中的測試WCF客戶端。我們有一些單元,我們希望能夠摺疊以獲得表格中最初可用的唯一ID列表。問題是,他們是太多的數據,我想知道如果有一種方法僅在從報告中首先加載ID和被點擊的ID時,則動態調用的額外信息。這樣我們就可以在應用程序開始時加載更少的數據。使用soap訪問SSRS報告的特定部分?

我想我可能可以做到這一點與肥皂請求的報告,但我真的不明白我應該如何弄清楚他們的API。這是由過去的其他人爲我們的WCF應用程序完成的。我想也許增加這個可以讓我只有桌子的某個部分?也許我在接近這個方面完全錯了。

public string Invoke(string reportPath, FilterViewModel reportParameter, NetworkCredential networkCredential) 
{ 
    if (NetworkInterface.GetIsNetworkAvailable()) 
    { 
     m_NetworkCredential = networkCredential; 
     m_reportParameter = reportParameter; 

     Dictionary<string, string> headers = new Dictionary<string, tring>(); 
     headers.Add("charset", "utf-8"); 
     headers.Add("useUnsafeHeaderParsing", "true"); 
     headers.Add("SOAPAction", "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/LoadReport"); 

     StringBuilder reqSOAPEnv = new StringBuilder(); 

     reqSOAPEnv.Append("<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'>"); 

     reqSOAPEnv.Append("<s:Body xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' "); 
     reqSOAPEnv.Append("xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"); 

     reqSOAPEnv.Append("<LoadReport xmlns='http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices'>"); 
     reqSOAPEnv.Append("<Report>"); 
     reqSOAPEnv.Append(reportPath); 
     reqSOAPEnv.Append("</Report>"); 
     reqSOAPEnv.Append("</LoadReport>"); 

     reqSOAPEnv.Append("</s:Body>"); 
     reqSOAPEnv.Append("</s:Envelope>"); 

     SSRS_ServiceRequestController serviceRequest = new SSRS_ServiceRequestController(); 
     result = serviceRequest.MakeWebRequest(ServiceURL, m_ContentType, m_Method, headers, networkCredential, reqSOAPEnv.ToString()); 
    } 
    return result; 
} 

回答

1

你看過SSRS Web Service documentation了嗎?據我知道有沒有method in the SOAP API得到報告的部分

一種解決方法可能是將報表呈現爲XML,並處理該XML以僅檢索所需的數據。另一個可使用的子報告要導出表,只使用子報表本身您的具體情況。

順便說一下,我知道您已經繼承了您發佈的代碼,但看起來有點不合適。爲什麼將SOAP請求構造爲字符串?讓框架處理SOAP的東西給你 - 如果您生成SSRS Web服務代理,並且只要使用正規的方法調用它可能是一個容易得多。

+0

老實說,我不能讓服務文檔的意義。我繼承了一團糟是我所繼承的。 –