第 3 課:存取 Web 服務
將報表伺服器 Web 服務的參考加入專案後,下一步就是建立 Web 服務之 Proxy 類別的執行個體。 然後您可以藉由呼叫 Proxy 類別中的方法來存取 Web 服務的方法。 當您的應用程式呼叫這些方法時,Visual Studio 所產生的 Proxy 類別程式碼會處理應用程式與 Web 服務之間的通訊。
首先,您要建立 Web 服務之 Proxy 類別的執行個體 ReportingService2010。 下一步,您要使用 Proxy 類別來呼叫 Web 服務的 GetProperties 方法。 您要使用此呼叫來擷取範例報表「公司銷售」的名稱和描述。
注意
使用進階服務存取在 SQL Server Express 上執行的 Web 服務時,您必須將 「$SQLExpress」 附加至 「ReportServer」 路徑。 例如:
http://<Server Name>/reportserver$sqlexpress/reportservice2010.asmx"
若要存取 Web 服務
您必須先將 Visual Basic) 指示詞中的 (新增
using
Imports
至程式碼 (檔案,將命名空間新增至 Visual Basic) module1.vb 中的 Program.cs 檔案。 如果您使用這個指示詞,就不需要完全符合命名空間的類型。若要完成這個步驟,請在您的程式碼檔案開頭中加入以下的程式碼:
Imports System Imports GetPropertiesSample.ReportService2010
using System; using GetPropertiesSample.ReportService2010;
當您在程式碼檔案中輸入命名空間指示詞之後,請在主控台應用程式的主要方法中輸入下列程式碼。 在設定 Web 服務執行個體的 Url 屬性時,請務必變更伺服器的名稱。
Sub Main() Dim rs As New ReportingService2010 rs.Credentials = System.Net.CredentialCache.DefaultCredentials rs.Url = "http://<Server Name>/reportserver/reportservice2010.asmx" Dim name As New [Property] name.Name = "Name" Dim description As New [Property] description.Name = "Description" Dim properties(1) As [Property] properties(0) = name properties(1) = description Try Dim returnProperties As [Property]() = rs.GetProperties( _ "/AdventureWorks 2012 Sample Reports/Company Sales 2012", properties) Dim p As [Property] For Each p In returnProperties Console.WriteLine((p.Name + ": " + p.Value)) Next p Catch e As Exception Console.WriteLine(e.Message) End Try End Sub
static void Main(string[] args) { ReportingService2010 rs = new ReportingService2010(); rs.Credentials = System.Net.CredentialCache.DefaultCredentials; rs.Url = "http://<Server Name>/reportserver/reportservice2010.asmx"; Property name = new Property(); name.Name = "Name"; Property description = new Property(); description.Name = "Description"; Property[] properties = new Property[2]; properties[0] = name; properties[1] = description; try { Property[] returnProperties = rs.GetProperties( "/AdventureWorks 2012 Sample Reports/Company Sales 2012",properties); foreach (Property p in returnProperties) { Console.WriteLine(p.Name + ": " + p.Value); } } catch (Exception e) { Console.WriteLine(e.Message); } }
儲存方案。
逐步解說範例程式碼會使用 Web 服務的 GetProperties 方法來擷取範例報表 Company Sales 2012 的屬性。 方法 GetProperties 會接受兩個引數:您要擷取屬性資訊的報表名稱,以及 Property[] 物件的陣列,其中包含您要擷取其值的屬性名稱。 方法也會傳回 Property[] 物件的陣列,其中包含 properties 引數中指定的屬性名稱和值。
注意
如果您為 properties 引數提供空 的 Property[] 陣列,則會傳回所有可用的屬性。
在先前範例中,程式碼使用 GetProperties 方法來傳回範例報表 Company Sales 2012 的名稱和描述。 然後程式碼會使用 foreach
迴圈,將屬性和值寫入主控台。
如需有關建立和使用報表伺服器 Web 服務之 Proxy 類別的詳細資訊,請參閱< Creating the Web Service Proxy>。
另請參閱
第 4 課:執行應用程式 (VB-VC#)
利用 Visual Basic 或 Visual C# 存取報表伺服器 Web 服務 (SSRS 教學課程)