第 3 课:访问 Web 服务

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

首先,您将创建一个 Web 服务代理类的实例 ReportingService2005。接着,您将使用代理类调用 Web 服务的 GetProperties 方法。您将使用该调用来检索一个示例报表 Company Sales 的名称和说明。

ms170088.note(zh-cn,SQL.90).gif注意:
若要访问在具有高级服务的 SQL Server Express 上运行的 Web 服务时,必须将“$SQLExpress”追加到“ReportServer”路径。例如: http://<Server Name>/reportserver$sqlexpress/reportservice2005.asmx"

访问 Web 服务

  1. 首先,您必须将命名空间添加到 Program.cs 文件(在 Visual Basic 中为 Module1.vb),采用的方法是向代码文件中添加 using(在 Visual Basic 中为 Import)指令。如果您使用该指令,则不必完全限定命名空间中的类型。

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

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

    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. 保存解决方案。

演练示例代码使用 Web 服务的 GetProperties 方法来检索示例报表 Company Sales 的属性。GetProperties 方法采用两个参数:一个是要检索其属性信息的报表的名称,一个是 Property[] 对象数组,它包含要检索其值的属性的名称。该方法还返回一个 Property[] 对象的数组,其中包含在属性参数中指定的属性名称和属性值。

ms170088.note(zh-cn,SQL.90).gif注意:
如果您为属性参数提供空 Property[] 数组,则将返回所有可用属性。

在前面的示例中,代码使用 GetProperties 方法返回示例报表 Company Sales 的名称和说明。然后,代码使用 foreach 循环将属性和值写入控制台。

有关创建和使用报表服务器 Web 服务的代理类的详细信息,请参阅Creating the Web Service Proxy

请参阅

任务

第 4 课:运行应用程序 (VB/VC#)

概念

教程:使用 Visual Basic 或 Visual C# 访问报表服务器 Web 服务

帮助和信息

获取 SQL Server 2005 帮助