第 3 课:访问 Web 服务

向项目添加报表服务器 Web 服务的引用后,下一步是创建 Web 服务的代理类的实例。 然后,可以通过调用代理类中的方法来访问 Web 服务的方法。 当应用程序调用这些方法时,Visual Studio 生成的代理类代码将处理应用程序和 Web 服务之间的通信。

首先,你将创建 Web 服务的代理类 ReportingService2010的实例。 接下来,将使用代理类调用 Web 服务 GetProperties 的方法。 你将使用该调用来检索示例报表之一“公司销售报告”的名称和描述。

注释

使用高级服务访问 SQL Server Express 上运行的 Web 服务时,必须将“$SQLExpress”追加到“ReportServer”路径。 例如:

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

访问 Web 服务

  1. 您必须首先通过在代码文件中添加一个 using 指令(在 Visual Basic 中为 Imports),将命名空间添加到 Program.cs 文件(在 Visual Basic 中为 Module1.vb)。 如果使用此指令,则无需完全限定命名空间中的类型。

  2. 为此,请将以下代码添加到代码文件的开头:

    Imports System  
    Imports GetPropertiesSample.ReportService2010  
    
    using System;  
    using GetPropertiesSample.ReportService2010;  
    
  3. 将命名空间指令输入代码文件后,请在控制台应用程序的 Main 方法中输入以下代码。 设置 Web 服务实例的 URL 属性时,请确保更改服务器的名称:

    Sub Main()  
       Dim rs As New ReportingService2010  
       rs.Credentials = System.Net.CredentialCache.DefaultCredentials  
       rs.Url = "http://<Server Name>/reportserver/reportservice2010.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 2012 Sample Reports/Company Sales 2012", 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)  
    {  
       ReportingService2010 rs = new ReportingService2010();  
       rs.Credentials = System.Net.CredentialCache.DefaultCredentials;  
       rs.Url = "http://<Server Name>/reportserver/reportservice2010.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 2012 Sample Reports/Company Sales 2012",properties);  
    
          foreach (Property p in returnProperties)  
          {  
             Console.WriteLine(p.Name + ": " + p.Value);  
          }  
       }  
    
       catch (Exception e)  
       {  
          Console.WriteLine(e.Message);  
       }  
    }  
    
  4. 保存解决方案。

演练示例代码使用 Web 服务的 GetProperties 方法来检索示例报表“公司销售 2012”的属性。 该方法 GetProperties 采用两个参数:要检索其属性信息的报表的名称和 Property [] 对象的数组,这些对象包含要检索其值的属性的名称。 该方法还返回 Property [] 对象的数组,该数组包含 properties 参数中指定的属性的名称和值。

注释

如果为属性参数提供空 Property[] 数组,则返回所有可用属性。

在上一个示例中,代码使用GetProperties方法返回示例报表“公司销售 2012”的名称和说明。 然后,代码使用循环 foreach 将属性和值写入控制台。

有关创建和使用报表服务器 Web 服务的代理类的详细信息,请参阅 “创建 Web 服务代理”。

另请参阅

第 4 课:运行应用程序(VB-VC#)
使用 Visual Basic 或 Visual C# 访问报表服务器 Web 服务(SSRS 教程)