次の方法で共有


レッスン 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 サービスにアクセスするには

  1. まず、コード ファイルに using (Visual Basic の場合は Import) ディレクティブを追加することで、Program.cs (Visual Basic の場合は Module1.vb) ファイルに名前空間を追加する必要があります。このディレクティブを使用すると、型を名前空間で完全修飾する必要がありません。

  2. この操作を行うには、次のコードをコード ファイルの先頭に追加します。

    Imports System
    Imports GetPropertiesSample.ReportService2005
    
    using System;
    using GetPropertiesSample.ReportService2005;
    
  3. コード ファイルに名前空間ディレクティブを入力したら、コンソール アプリケーションの 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);
       }
    }
    
  4. ソリューションを保存します。

このチュートリアルのサンプル コードでは、Web サービスの GetProperties メソッドを使用して、サンプル レポート Company Sales のプロパティを取得しています。この GetProperties メソッドでは、プロパティ情報を取得するレポートの名前と、値を取得する対象のプロパティの名前を保持する Property[] オブジェクトの配列という 2 つの引数を受け取ります。また、このメソッドからは、プロパティ引数に指定されているプロパティの名前と値を保持する Property[] オブジェクトの配列が返されます。

注意注意

プロパティ引数に空の Property[] を渡すと、取得できるすべてのプロパティが返されます。

上記のサンプル コードでは、GetProperties メソッドを使用して、サンプル レポート Company Sales の名前と記述が返されています。次に、foreach ループを使用して、プロパティと値をコンソールに書き込んでいます。

レポート サーバー Web サービスのプロキシ クラスの作成と使用の詳細については、「Web サービス プロキシの作成」を参照してください。