レッスン 3 : Web サービスへのアクセス
レポート サーバー Web サービスへの参照をプロジェクトに追加したら、次は、Web サービスのプロキシ クラスのインスタンスを作成します。その後、このプロキシ クラスのメソッドを呼び出すことによって、Web サービスのメソッドにアクセスできます。アプリケーションから Web サービスのメソッドが呼び出されると、Visual Studio によって生成されたプロキシ クラスのコードにより、アプリケーションと Web サービス間の通信が処理されます。
まず、Web サービスのプロキシ クラス ReportingService2005 のインスタンスを作成します。次に、このプロキシ クラスを使用して Web サービスの GetProperties メソッドを呼び出します。この呼び出しを使用して、サンプル レポート Company Sales の名前と記述を取得します。
注意 |
---|
SQL Server Express with Advanced Services 上で実行されている Web サービスにアクセスする場合は、"ReportServer" パスに "$SQLExpress" を追加する必要があります。次に例を示します。 http://<Server Name>/reportserver$sqlexpress/reportservice2005.asmx" |
Web サービスにアクセスするには
まず、コード ファイルに using (Visual Basic の場合は Import) ディレクティブを追加することで、Program.cs (Visual Basic の場合は Module1.vb) ファイルに名前空間を追加する必要があります。このディレクティブを使用すると、型を名前空間で完全修飾する必要がありません。
この操作を行うには、次のコードをコード ファイルの先頭に追加します。
Imports System Imports GetPropertiesSample.ReportService2005
using System; using GetPropertiesSample.ReportService2005;
コード ファイルに名前空間ディレクティブを入力したら、コンソール アプリケーションの Main メソッドに次のコードを入力します。Web サービス インスタンスの Url プロパティを設定するときには、必ずサーバーの名前を変更してください。
Sub Main() Dim rs As New ReportingService2005 rs.Credentials = System.Net.CredentialCache.DefaultCredentials rs.Url = "http://<Server Name>/reportserver/reportservice2005.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 Sample Reports/Company Sales", 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) { ReportingService2005 rs = new ReportingService2005(); rs.Credentials = System.Net.CredentialCache.DefaultCredentials; rs.Url = "http://<Server Name>/reportserver/reportservice2005.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 Sample Reports/Company Sales",properties); foreach (Property p in returnProperties) { Console.WriteLine(p.Name + ": " + p.Value); } } catch (Exception e) { Console.WriteLine(e.Message); } }
ソリューションを保存します。
このチュートリアルのサンプル コードでは、Web サービスの GetProperties メソッドを使用して、サンプル レポート Company Sales のプロパティを取得しています。この GetProperties メソッドでは、プロパティ情報を取得するレポートの名前と、値を取得する対象のプロパティの名前を保持する Property[] オブジェクトの配列という 2 つの引数を受け取ります。また、このメソッドからは、プロパティ引数に指定されているプロパティの名前と値を保持する Property[] オブジェクトの配列が返されます。
注意 |
---|
プロパティ引数に空の Property[] を渡すと、取得できるすべてのプロパティが返されます。 |
上記のサンプル コードでは、GetProperties メソッドを使用して、サンプル レポート Company Sales の名前と記述が返されています。次に、foreach ループを使用して、プロパティと値をコンソールに書き込んでいます。
レポート サーバー Web サービスのプロキシ クラスの作成と使用の詳細については、「Web サービス プロキシの作成」を参照してください。