Lección 3: obtener acceso al servicio web

Una vez haya agregado al proyecto una referencia del servicio web del servidor de informes, el paso siguiente consiste en crear una instancia de la clase proxy del servicio web. A continuación, puede tener acceso a los métodos del servicio web llamando a los métodos de la clase proxy. Cuando la aplicación llama a estos métodos, el código de la clase proxy generado por Visual Studio controla las comunicaciones entre la aplicación y el servicio web.

En primer lugar, va a crear una instancia de la clase proxy del servicio web, ReportingService2005. A continuación, hará una llamada al método GetProperties del servicio web utilizando la clase proxy. Utilizará la llamada para recuperar el nombre y la descripción de uno de los informes de ejemplo, Company Sales.

Nota

Cuando tenga acceso a un servicio web que se ejecuta en SQL Server Express con Advanced Services, debe agregar "$SQLExpress" a la ruta de acceso de "ReportServer". Por ejemplo:

http://<Server Name>/reportserver$sqlexpress/reportservice2005.asmx"

Para obtener acceso al servicio web

  1. Primero debe agregar el espacio de nombres al archivo Program.cs (Module1.vb en Visual Basic) agregando una directiva using (Import en Visual Basic) al archivo de código. Si utiliza esta directiva, no es necesario utilizar nombres completos para los tipos en el espacio de nombres.

  2. Para ello, agregue el código siguiente al principio del archivo de código:

    Imports System
    Imports GetPropertiesSample.ReportService2005
    
    using System;
    using GetPropertiesSample.ReportService2005;
    
  3. Una vez indicada la directiva de espacio de nombres en el archivo de código, indique el código siguiente en el método Main de la aplicación de la consola. Asegúrese de cambiar el nombre del servidor al establecer la propiedad Url de la instancia del servicio web:

    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 2008 Sample Reports/Company Sales 2008", 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 2008 Sample Reports/Company Sales 2008",properties);
    
          foreach (Property p in returnProperties)
          {
             Console.WriteLine(p.Name + ": " + p.Value);
          }
       }
    
       catch (Exception e)
       {
          Console.WriteLine(e.Message);
       }
    }
    
  4. Guarde la solución.

El código de ejemplo de la visita guiada utiliza el método GetProperties del servicio web para recuperar las propiedades del informe de ejemplo, Company Sales 2008. El método GetProperties toma dos argumentos: el nombre del informe cuya información de propiedades desea recuperar y una matriz de objetos Property[] con los nombres de las propiedades cuyos valores desea recuperar. El método devuelve también una matriz de objetos Property[] con los nombres y valores de las propiedades especificadas en el argumento de propiedades.

Nota

Si proporciona una matriz Property[] vacía para el argumento de propiedades, se devuelven todas las propiedades disponibles.

En el ejemplo anterior, el código utiliza el método GetProperties para devolver el nombre y la descripción del informe de ejemplo, Company Sales 2008. A continuación, el código utiliza un bucle foreach para escribir las propiedades y los valores en la consola.

Para obtener más información acerca de la creación y utilización de una clase proxy para el servicio web del servidor de informes, vea Crear el proxy del servicio web.