Share via


Lektion 3: Zugreifen auf den Webdienst

Nachdem Sie dem Projekt einen Verweis auf den Berichtsserver-Webdienst hinzugefügt haben, besteht der nächste Schritt darin, eine Instanz der Proxyklasse des Webdiensts zu erstellen. Auf die Methoden des Webdiensts kann durch Aufrufen der Methoden in der Proxyklasse zugegriffen werden. Wenn diese Methoden von Ihrer Anwendung aufgerufen werden, behandelt der von Visual Studio generierte Proxyklassencode die Kommunikation zwischen Ihrer Anwendung und dem Webdienst.

Zuerst erstellen Sie ReportingService2005 - eine Instanz der Proxyklasse des Webdiensts. Dann rufen Sie die GetProperties-Methode des Webdiensts mithilfe der Proxyklasse auf. Sie verwenden diesen Aufruf zum Abrufen des Namens und der Beschreibung eines der Beispielsberichte, Company Sales.

HinweisHinweis

Beim Zugreifen auf einen Webdienst, der unter SQL Server Express mit Advanced Services ausgeführt wird, müssen Sie "$SQLExpress" an den "ReportServer"-Pfad anfügen. Beispiel:

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

So greifen Sie auf den Webdienst zu

  1. Zunächst müssen Sie der Datei Program.cs (Module1.vb in Visual Basic) den Namespace hinzufügen, indem Sie der Codedatei eine using-Direktive (Import inVisual Basic) hinzufügen. Wenn Sie diese Direktive verwenden, müssen die Typen im Namespace nicht vollqualifiziert sein.

  2. Fügen Sie dazu den folgenden Code am Anfang der Codedatei ein:

    Imports System
    Imports GetPropertiesSample.ReportService2005
    
    using System;
    using GetPropertiesSample.ReportService2005;
    
  3. Nachdem Sie die Namespacedirektive in die Codedatei eingegeben haben, geben Sie den folgenden Code in die Main-Methode Ihrer Konsolenanwendung ein. Stellen Sie sicher, dass Sie beim Festlegen der Url-Eigenschaft der Webdienstinstanz den Namen Ihres Servers ändern:

    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. Speichern Sie die Projektmappe.

Der Beispielcode in dieser exemplarischen Vorgehensweise verwendet die GetProperties-Methode des Webdiensts, um Eigenschaften des Beispielberichts Company Sales 2008 abzurufen. Die GetProperties-Methode hat zwei Argumente: den Namen des Berichts, für den Sie Eigenschaftsinformationen abrufen möchten, und ein Array von Property[]-Objekten, das die Namen von Eigenschaften enthält, deren Werte Sie abrufen möchten. Die Methode gibt auch ein Array von Property[]-Objekten zurück, die die Namen und Werte der Eigenschaften enthalten, die im Eigenschaftenargument angegeben sind.

HinweisHinweis

Wenn Sie ein leeres Property[]-Array für das Eigenschaftenargument angeben, werden alle verfügbaren Eigenschaften zurückgegeben.

Im vorherigen Beispiel verwendet der Code die GetProperties-Methode, um den Namen und die Beschreibung des Beispielberichts Company Sales 2008 zurückzugeben. Im Code wird dann eine foreach-Schleife verwendet, um die Eigenschaften und Werte auf die Konsole zu schreiben.

Weitere Informationen zum Erstellen und Verwenden einer Proxyklasse für den Berichtsserver-Webdienst finden Sie unter Erstellen des Webdienstproxys.