Condividi tramite


Lezione 3: Accesso al servizio Web

Dopo avere aggiunto al progetto un riferimento al servizio Web ReportServer, il passaggio successivo consiste nel creare un'istanza della classe proxy del servizio Web. Per accedere ai metodi del servizio Web, è quindi possibile eseguire una chiamata dalla classe proxy. Quando l'applicazione chiama questi metodi, il codice della classe proxy generato da Visual Studio gestisce le comunicazioni tra l'applicazione e il servizio Web.

Verrà innanzitutto creata un'istanza della classe proxy del servizio Web, ovvero ReportingService2005, quindi verrà utilizzata la classe proxy per chiamare il metodo GetProperties del servizio Web. La chiamata del metodo verrà utilizzata per recuperare il nome e la descrizione di uno dei report di esempio, ovvero Company Sales.

[!NOTA]

Quando si accede a un servizio Web in esecuzione in SQL Server Express with Advanced Services, è necessario aggiungere "$SQLExpress" al percorso "ReportServer" come illustrato di seguito:

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

Per accedere al servizio Web

  1. Aggiungere innanzitutto lo spazio dei nomi al file Program.cs (Module1.vb in Visual Basic) tramite l'aggiunta di una direttiva using (Import in Visual Basic) al file di codice. Quando si utilizza questa direttiva, non è necessario specificare il nome completo dei tipi nello spazio dei nomi.

  2. A tale scopo, aggiungere il codice seguente all'inizio del file di codice:

    Imports System
    Imports GetPropertiesSample.ReportService2005
    
    using System;
    using GetPropertiesSample.ReportService2005;
    
  3. Dopo avere immesso la direttiva dello spazio dei nomi nel file del codice, immettere il codice seguente nel metodo Main dell'applicazione console. Assicurarsi di modificare il nome del server quando si imposta la proprietà Url dell'istanza del servizio 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 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. Salvare la soluzione.

Nel codice di esempio dell'esercitazione viene utilizzato il metodo GetProperties del servizio Web per recuperare le proprietà del report di esempio Company Sales. Il metodo GetProperties accetta due argomenti, ovvero il nome del report per il quale si desidera recuperare informazioni sulle proprietà e una matrice di oggetti Property[] contenente i nomi delle proprietà di cui si desidera recuperare i valori. Il metodo restituisce inoltre una matrice di oggetti Property[] contenente i nomi e i valori delle proprietà specificate nell'argomento Properties.

[!NOTA]

Se per l'argomento Properties si imposta una matrice Property[] vuota, verranno restituite tutte le proprietà disponibili.

Nel codice dell'esempio precedente viene utilizzato il metodo GetProperties per restituire il nome e la descrizione del report di esempio Company Sales, quindi viene utilizzato un ciclo foreach per scrivere le proprietà e i valori nella console.

Per ulteriori informazioni sulla creazione e l'utilizzo di una classe proxy per il servizio Web ReportServer, vedere Creazione del proxy del servizio Web.