Share via


Lição 3: Acessando o serviço Web

Depois que você adicionar uma referência para o serviço Web Servidor de Relatórios ao seu projeto, a próxima etapa será criar uma instância da classe proxy do serviço Web. Assim, você poderá acessar os métodos do serviço Web chamando os métodos na classe proxy. Quando o aplicativo chama esses métodos, o código da classe proxy gerado pelo Visual Studio manipula as comunicações entre o aplicativo e o serviço Web.

Primeiro, você criará uma instância da classe proxy do serviço Web, ReportingService2005. Em seguida, você fará uma chamada ao método GetProperties do serviço Web usando a classe proxy. Use a chamada para recuperar o nome e descrição de um dos relatórios de exemplo, Company Sales.

ObservaçãoObservação

Ao acessar um serviço Web executado no SQL Server Express com Serviços Avançados, você deve acrescentar "$SQLExpress" ao caminho de "ReportServer". Por exemplo:

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

Para acessar o serviço Web

  1. Primeiro, adicione o namespace ao arquivo Program.cs (Module1.vb no Visual Basic) acrescentando uma diretiva using (Import no Visual Basic) ao arquivo de código. Se você usar essa diretiva, não precisará qualificar os tipos completamente no namespace.

  2. Para fazer isso, adicione o seguinte código ao início de seu arquivo de código:

    Imports System
    Imports GetPropertiesSample.ReportService2005
    
    using System;
    using GetPropertiesSample.ReportService2005;
    
  3. Após a inserção da diretiva de namespace no arquivo de código, digite o código a seguir no método Main do aplicativo de console. Não se esqueça de alterar o nome do servidor ao configurar a propriedade Url da instância do serviço 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. Salve a solução.

O código de exemplo passo a passo usa o método GetProperties do serviço Web para recuperar propriedades do relatório de exemplo, Company Sales 2008. O método GetProperties usa dois argumentos: o nome do relatório para o qual você deseja recuperar informações de propriedade e uma matriz de objetos Property[] que contém os nomes das propriedades cujos valores você deseja recuperar. O método também retorna uma matriz de objetos Property[] que contém os nomes e os valores das propriedades especificadas no argumento de propriedades.

ObservaçãoObservação

Se você fornecer uma matriz Property[] para o argumento de propriedades, todas as propriedades disponíveis serão retornadas.

No exemplo anterior, o código usa o método GetProperties para retornar o nome e a descrição do relatório de exemplo, Company Sales 2008. O código usa um loop foreach para gravar as propriedades e os valores no console.

Para obter mais informações sobre como criar e usar uma classe proxy para o serviço Web Servidor de Relatórios, consulte Criando o proxy de serviço Web.