创建 Web 服务代理
客户端和 Web 服务可以通过 SOAP 消息进行通信。这些消息将输入参数和输出参数封装为 XML。代理类将参数映射到 XML 元素,然后通过网络发送 SOAP 消息。通过这种方法,代理类使您不必在 SOAP 级别与 Web 服务通信,并使您可以在支持 SOAP 和 Web 服务代理的任何开发环境中调用 Web 服务方法。
可以通过两种方法,使用 .NET Framework 将代理类添加到开发项目中:使用 .NET Framework 中的 WSDL 工具和在 Visual Studio 中添加 Web 引用。下列各节更为详细地讨论这一主题。
使用 WSDL 工具添加代理
.NET Framework SDK 包括 Web 服务描述语言工具 (Wsdl.exe),它使得您能够生成 Web 服务代理以用于 .NET Framework 开发环境中。在支持 Web 服务的语言(当前为 C# 和 Visual Basic)中创建客户端代理的最常用方法是使用 WSDL 工具。
使用 Wsdl.exe 将代理类添加到项目中
从命令提示符下,使用 Wsdl.exe 创建代理类,同时指定(至少)指向报表服务器 Web 服务的 URL。
例如,下面的命令提示符语句为报表服务器 Web 服务的管理端点指定 URL。
wsdl /language:CS /n:"Microsoft.SqlServer.ReportingServices2005" http://<Server Name>/reportserver/reportservice2005.asmx?wsdl
WSDL 工具接受多种用于生成代理的命令提示符参数。前一示例指定语言 C# 和建议在代理中使用的一个命名空间(以防止在使用多个 Web 服务端点时出现名称冲突),并生成一个名为 ReportingService2005.cs 的 C# 文件。如果本示例已指定 Visual Basic,则该示例应已生成名为 ReportingService2005.vb 的代理文件。将在您运行此命令的目录中创建此文件。
将代理类编译为程序集文件(具有扩展名 .dll)并在项目中引用它,或者将该类添加为一个项目项。
注意 当您手动将代理类添加到项目时,您需要添加对于 System.Web.Services.dll 的引用。如果您在 Visual Studio .NET 中使用 Web 引用添加代理,则将自动为您创建引用。有关详细信息,请参阅本主题后面的“在 Visual Studio 中使用 Web 引用添加代理”。
在将代理类作为项添加到项目后,关联的文件将出现在解决方案资源管理器中。
若要以编程方式调用此服务,应创建代理类的实例。
以下代码示例显示在项目中创建 ReportingService2005 代理类的实例的语法:
Dim service As New ReportingService2005()
ReportingService2005 service = new ReportingService2005();
有关 Wsdl.exe 工具的详细信息(包括其完整语法),请参阅 .NET Framework SDK 文档中的“Web 服务描述语言工具”。有关 Web 服务代理的完整解释,请参阅 .NET Framework SDK 文档中的“创建 XML Web 服务代理”。
在 Visual Studio 中使用 Web 引用添加代理
Web 引用使得项目能够使用一个或多个 Web 服务。Visual Studio 使得用户能够通过以下几个简单步骤向项目添加 Web 服务引用。
将 Web 引用添加到项目
在**“解决方案资源管理器”**中,选择要使用 Web 服务的项目。
在**“项目”菜单中,单击“添加 Web 引用”**。
**“添加 Web 引用”**对话框打开。
在**“URL”**字段中,输入指向报表服务器 Web 服务的完整路径。
报表服务器 Web 服务的报表执行端点的简化 URL 可能如下所示:
http://<Server Name>/reportserver/reportexecution2005.asmx
此 URL 包含在其中部署报表服务器 Web 服务的域、包含该服务的文件夹的名称以及该服务的发现文件的名称。有关不同 URL 元素的完整说明,请参阅访问 SOAP API。
由 Web 服务提供的方法和属性的说明将出现在“浏览器”窗格的左侧。
注意 有关与报表服务器 Web 服务关联的项的详细信息,请参阅 报表服务器 Web 服务方法。
验证项目是否可以使用报表服务器 Web 服务,以及您是否具有适当的权限访问报表服务器。
在**“Web 引用名”**字段中输入一个名称,您将在代码中使用该名称以编程方式访问报表服务器 Web 服务。
选择**“添加引用”**按钮,以在应用程序中创建对 Web 服务的引用。
新引用将出现在**“解决方案资源管理器”中处于活动状态的项目的“Web 引用”节点下,其名称在“Web 引用名”**字段中指定。
在**“解决方案资源管理器”**中,展开“Web 引用”文件夹,以记下与可用于项目中的项的 Web 引用类对应的命名空间。
在将 Web 引用添加到项目后,关联的文件将显示在**“解决方案资源管理器”**的“Web 引用”文件夹内的某个文件夹中。
在添加 Web 引用之后,使用以下语法创建代理类的实例:
Dim rs As New myNamespace.myReferenceName.ReportExecutionService()
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
myNamespace.myReferenceName.ReportExecutionService rs = new myNamespace.myReferenceName.ReportExecutionService();
rs.Url = "http://<Server Name>/reportserver/reportexecution2005.asmx?wsdl"
rs.Credentials = System.Net.CredentialCache.DefaultCredentials
还可以将 using(在 Visual Basic 中为 Import)指令添加到报表服务器 Web 服务引用中。如果您使用此指令,则不需要完全限定命名空间中的类型。为此,请在文件中添加以下代码:
Import myNamespace.myReferenceName
using myNamespace.myReferenceName;