2002-09-11 14:22
如何使用Visual Studio .NET和Office XP创建和部署XML Web Service
Frank C. Rice
Microsoft Corporation
2002 年 5 月
适用于:
Microsoft? Visual Studio?
.NET
Microsoft Access
2002
Microsoft Office XP Web Services
Toolkit
摘要:学习如何创建和部署用 Microsoft Visual Studio .NET 创建的 XML Web Service 示例。使用 Microsoft Access 2002 窗体来访问 XML Web Service。
简介
XML Web Service
为应用程序提供了一种交换数据和处理功能的方法。通常,XML Web Service 是一个存放在 Web 服务器上的动态链接库 (DLL),可以通过
Internet 调用其方法。在此方案中,客户端应用程序通过使用超文本传输协议 (HTTP) 发送和接收 SOAP 消息,与 XML Web Service
进行通信。
在本文中,我们将示范如何使用 Microsoft? Visual Studio? .NET 来创建、部署和访问 XML Web Service。首先,我们在提供 XML Web Service 的 Web 服务器上设置 Internet Information Server (IIS)。
注意:IIS 4.0 与 Microsoft Windows NT ? 4.0 Server 兼容。IIS 5.0 与
Windows? 2000 Server 兼容,并且在默认情况下与 Windows? 2000 Server 一起安装。
然后,使用 Visual
Studio .NET 创建一个 ASP.NET Web Service 项目。接着,向项目中添加代码来实现 XML Web Service。我们的 XML
Web Service 示例接受美国各州的两个字符的州名缩写,并返回有关该州的信息,包括该州的全名、首府、加入联邦的日期及其加入顺序。随后,我们将在
Visual Studio .NET 中测试 XML Web Service。最后,用 Microsoft Access 2002
窗体创建客户端应用程序来访问该 XML Web Service 并显示结果。
XML Web Service 概述
那么,创建和使用 XML Web
Service 要涉及到哪些操作呢?通常,用户可能需要先导航到提供 XML Web Service 注册(如通用说明、发现和集成 [UDDI] 注册服务)的
Web 站点,查看可用的 XML Web Service。注册服务将提供各种可用 XML Web Service 的信息,例如:提供 XML Web
Service 的公司名称,公司 Web 站点的 URL 地址,以及用户用来确定 XML Web Service 详细信息的 WSDL
文件位置。
然后,开发人员使用从 WSDL 文件收集的信息来开发客户端应用程序,以便访问 XML Web Service 并处理结果。开发人员首先需要设置对 Microsoft SOAP 库 (mssoap1.dll) 的引用。Microsoft SOAP 库 (mssoap1.dll) 可以通过安装 SOAP Toolkit 2.0 获得。
注意:Microsoft SOAP Toolkit 2.0 SP2(英文)可从 MSDN
下载。
Microsoft SOAP 库包含使应用程序能够调用 XML Web Service
方法的客户端(和服务器端)组件。然后,开发人员将设置对 WSDL 文件的 Web 引用(使用 Web Service 引用工具)。
注意:Web Service 引用工具包含在可以从 MSDN 下载的 Office XP Web Services
Toolkit(英文)中。
Web Service 引用工具会创建代理类(XML Web Service
在客户端应用程序中的本地表示形式),这样就更容易使用 HTTP 与 XML Web Service 通信。通信由来自客户端应用程序的 SOAP 请求和来自
XML Web Service 的 SOAP 响应组成。实现 XML Web Service 的服务器将使用“侦听器”(包含在用于实现处理程序的 WSDL
文件和 Active Server Page (ASP) 文件中的代码)接收和分析 SOAP 请求。一旦侦听器探测到来自客户端应用程序的 SOAP
请求,它就会分析该请求,通过传递任一参数调用 XML Web Service 方法,然后接收方法调用的结果。接着,侦听器将响应包装在另一个 SOAP
消息中,并将其发送给客户端应用程序,最后由客户端组件分析和处理该结果。
至此,我们就看到了如何在客户端使用 XML Web Service。要在 Web 服务器上创建和实现 XML Web Service,需要以下组件:
一个 DLL,该 DLL 包含能象 XML Web Service
一样提供的函数(方法)。
一种方法,通过该方法可以向需要使用 XML Web Service
的客户端通告所提供的功能、方法的名称、所使用的输入/输出参数以及与 XML Web Service 相关的其他信息。这些信息由 WSDL
文件提供。
要使用 XML Web Service,您需要做的只是创建客户端应用程序以便使用 WSDL 文件中包含的信息来访问 XML Web
Service,以及确保在每个客户端计算机上安装 Microsoft SOAP 库。其他可能需要的工具取决于用来创建客户端的开发环境。
Visual Studio .NET 中的 XML Web
Service
Microsoft Visual Studio .NET 通过自动创建许多实现 XML Web Service
时所需的文件来简化创建和部署 XML Web Service 的任务。例如,Visual Studio .NET 提供了 ASP.NET Web Service
项目类型来帮助您创建和使用 XML Web Service。
在创建 ASP.NET Web Service 项目时,Visual Studio .NET 自动构造在 Web 服务器(假设正在 Web 服务器上开发 XML Web Service)上实现 XML Web Service 所需的项目和文件。例如,Visual Studio .NET 自动创建一个 .asmx 文件,以便包含向 XML Web Service 添加功能的类和方法。
注意:除了 Web 类前面带有 [WebMethod] 属性以外,XML Web Service
类与标准类相似。
另外,Visual Studio .NET 会自动创建 WSDL 和 WSML 文件,甚至会提供显示 XML Web
Service 中使用的方法和参数的信息页。您也可以使用此页测试 XML Web Service。
在客户端,可以使用 Microsoft Visual Basic? 6.0、Visual Studio .NET 或 Office 应用程序(例如 Access 或 Microsoft Excel)来创建使用 XML Web Service 的客户端应用程序。首先,需要设置对 WSDL 文件的引用。在 Visual Studio .NET 中实现的 XML Web Service 中,通过查询字符串(例如,http://localhost/StatesInformationWS/StatesInformation.asmx?wsdl)来引用 .asmx 文件,从而实现对 WSDL 文件的引用。在 Visual Basic 或 Office 应用程序中,则通过使用 Web Service 引用工具来设置对 WSDL 文件的 Web 引用。Web Service 引用工具包含在可以从 MSDN 下载的 Office XP Web Services Toolkit(英文)中。
然后,Web Service 引用工具就会获取 WSDL 文件中的信息,并创建 Microsoft Visual Basic for Applications (VBA) 代理类。代理类提供 XML Web Service 在客户端应用程序中的本地表示形式。另外,因为 XML Web Service 类与客户端应用程序中的代理连接,所以在客户端创建对象时可以使用 Microsoft IntelliSense?。然后,向调用代理类中的方法的应用程序添加代码。这样,就可以开始使用 XML Web Service 了。
现在,让我们用这些信息来使用和创建 XML Web Service。
创建 XML Web Service
要部署 XML Web
Service,需要有一个 Web 服务器,例如运行 IIS 的 Microsoft Windows? 2000 Server。然后,需要在 Web
服务器上设置一个虚拟根(也称为“虚拟目录”),以便存储创建的 XML Web Service 文件。
设置 Internet Information Server
向 Web
服务器添加一个文件夹。可以在服务器上使用现有的文件夹或创建一个新文件夹。对于本示例,建议创建一个新文件夹(例如,C:\StatesInfoWS)。
然后,在
IIS 中设置一个虚拟根。在控制面板中,双击“管理工具”,然后双击“Internet 服务管理器”,即显示 Internet
信息服务控制台。
在左侧窗格中,展开包括您的 Web 服务器的节点,右键单击“默认 Web
站点”节点,指向“New”,然后单击“虚拟目录”。这会打开虚拟目录向导。
在“欢迎使用虚拟目录创建向导”屏幕中,单击“下一步”。
在“虚拟目录别名”屏幕中,键入
StatesInfoWS,然后单击“下一步”。
在“Web 站点内容目录”屏幕中,键入步骤 1
中创建的文件夹的路径,然后单击“下一步”。
在“访问权限”屏幕中,选择“读取”和“运行脚本”复选框,然后单击“下一步”。单击“完成”。
创建
ASP.NET 项目
现在,我们要用 GetStateInfo 方法创建名为 StatesInformationWS 的新
Visual Basic .NET ASP.NET Web Service 项目和名为 StatesInformation 的类模块。
启动 Visual Studio .NET。在开始页面上,单击 New Project(新建项目)。
在 New
Project(新建项目)对话框中,在 Project Types(项目类型)列表中选择 Visual Basic Projects(Visual Basic
项目),然后单击 ASP.NET Web Service。
在 Location(位置)框中,键入 http://localhost/StatesInfoWS。请注意,在默认情况下,所有的 XML
Web Service 项目都保存在 Web 服务器的 localhost 虚拟目录下。
单击 OK(确定)。该项目将包含一个名为
Service1.asmx 的模块、一个配置文件和一个发现文件 (.vsdisco)。其中,配置文件包含有关 Web
服务器的配置信息,发现文件包含的信息使与您的服务器连接的其他应用程序能够定位您的 XML Web Service
并查看其成员的名称和语法。
因为在下一步骤中您将创建自己的文件,所以请先删除 Service1.asmx 模块。请选择该文件,单击鼠标右键,再单击
Delete(删除),然后在确认对话框中单击 OK(确定)。
现在添加自己的 .asmx 文件。在 Solution
Explorer(解决方案资源管理器)中,右键单击 StatesInformationWS,选择 Add(添加),然后选择 Add New
Item(添加新项)。
在 Add New Item(添加新项)对话框的 Web Project Item(Web 项目项)下,选择 Web
Service 图标,然后键入 StatesInformation.asmx。单击 OK(确定)。
右键单击
StatesInformation.asmx,然后选择 View Code(查看代码)。
在 Web Services Designer
Generated Code(Web Service 设计器生成的代码)语句下面添加以下代码。这些代码是用于向您的 XML Web Service
添加功能的方法:
<WebMethod()> Public Function GetStateInfo(ByVal
strAbbreviatedName
As
String) As String
' 目的:此过程用于模拟 XML Web
Service。
'
此过程接受两个字符的州名缩写,
'
并返回有关该州的信息。
' 接受:strAbbreviatedName -
两个字符的
'
州名缩写。
' 返回:有关该州的信息,包括全称、首府、
' 加入联邦的日期及其加入顺序。
'
Select Case
UCase(Trim(strAbbreviatedName))
Case "AL"
Return "Name: Alabama " &
_
"Capital: Montgomery " &
_
"Admitted: December 14, 1819 " &
_
"Order: 22"
Case
"AK"
Return "Name: Alaska " &
_
"Capital: Juneau " &
_
"Admitted: January 3, 1959 " &
_
"Order: 49"
Case
"AZ"
Return "Name: Arizona " &
_
"Capital: Phoenix " &
_
"Admitted: February 14, 1912 " &
_
"Order: 48"
Case
"AR"
Return "Name: Arkansas " &
_
"Capital: Little_Rock " &
_
"Admitted: June 15, 1836 " &
_
"Order: 25"
Case
"CA"
Return "Name: California " &
_
"Capital: Sacramento " &
_
"Admitted: September 9, 1850 " &
_
"Order: 31"
Case
"CO"
Return "Name: Colorado " &
_
"Capital: Denver " &
_
"Admitted: August 1, 1876 " &
_
"Order: 38"
Case
"CT"
Return "Name: Connecticut " &
_
"Capital: Hartford " &
_
"Admitted: January 9, 1788 " &
_
"Order: 5"
Case
"DC"
Return "Name: District_of_Columbia " &
_
"Capital: Not_Applicable " &
_
"Admitted: N/A " &
_
"Order: N/A"
Case
"DE"
Return "Name: Delaware " &
_
"Capital: Dover " &
_
"Admitted: December 7, 1787 " &
_
"Order: 1"
Case
"FL"
Return "Name: Florida " &
_
"Capital: Tallahassee " &
_
"Admitted: March 3, 1845 " &
_
"Order: 27"
Case
"GA"
Return "Name: Georgia " &
_
"Capital: Atlanta " &
_
"Admitted: January 2, 1788 " &
_
"Order: 4"
Case
"HI"
Return "Name: Hawaii " &
_
"Capital: Honolulu " &
_
"Admitted: August 21, 1959 " &
_
"Order: 50"
Case
"ID"
Return "Name: Idaho " &
_
"Capital: Boise " &
_
"Admitted: July 3, 1890 " &
_
"Order: 43"
Case
"IL"
Return "Name: Illinois " &
_
"Capital: Springfield " &
_
"Admitted: Decemer 3, 1818 " &
_
"Order: 21"
Case
"IN"
Return "Name: Indiana " &
_
"Capital: Indianapolis " &
_
"Admitted: December 11, 1816 " &
_
"Order: 19"
Case
"IA"
Return "Name: Iowa " &
_
"Capital: Des_Moines " &
_
"Admitted: December 28, 1846 " &
_
"Order: 29"
Case
"KS"
Return "Name: Kansas " &
_
"Capital: Topeka " &
_
"Admitted: January 29, 1861 " &
_
"Order: 34"
Case
"KY"
Return "Name: Kentucky " &
_
"Capital: Frankfort " &
_
"Admitted: June 1, 1792 " &
_
"Order: 15"
Case
"LA"
Return "Name: Louisiana " &
_
"Capital: Baton_Rouge " &
_
"Admitted: April 30, 1812 " &
_
"Order: 18"
Case
"ME"
Return "Name: Maine " &
_
"Capital: Augusta " &
_
"Admitted: March 15, 1820 " &
_
"Order: 23"
Case
"MD"
Return "Name: Maryland " &
_
"Capital: Annapolis " &
_
"Admitted: April 28, 1788 " &
_
"Order: 7"
Case
"MA"
Return "Name: Massachesetts " &
_
"Capital: Boston " &
_
"Admitted: February 6, 1788 " &
_
"Order: 6"
Case
"MI"
Return "Name: Michigan " &
_
"Capital: Lansing " &
_
"Admitted: Jan 26, 1837 " &
_
"Order: 26"
Case
"MN"
Return "Name: Minnesota " &
_
"Capital: St._Paul " &
_
"Admitted: May 11, 1858 " &
_
"Order: 32"
Case
"MS"
Return "Name: Mississippi " &
_
"Capital: Jackson " &
_
"Admitted: December 10, 1817 " &
_
"Order: 20"
Case
"MO"
Return "Name: Missouri " &
_
"Capital: Jefferson_City " &
_
"Admitted: August 10, 1821 " &
_
"Order: 24"
Case
"MT"
Return "Name: Montana " &
_
"Capital: Helena " &
_
"Admitted: November 8, 1889 " &
_
"Order: 41"
Case
"NE"
Return "Name: Nebraska " &
_
"Capital: Lincoln " &
_
"Admitted: March 1, 1867 " &
_
"Order: 37"
Case
"NV"
Return "Name: Nevada " &
_
"Capital: Carson_City " &
_
"Admitted: October 31, 1864 " &
_
"Order: 36"
Case
"NH"
Return "Name: New_Hampshire " &
_
"Capital: Concord " &
_
"Admitted: June 21, 1788 " &
_
"Order: 9"
Case
"NJ"
Return
"Name: New_Jersey " &
_
"Capital: Trenton " &
_
"Admitted: December 18, 1787 " &
_
"Order: 3"
Case
"NM"
Return "
Name: New_Mexico " &
_
"Capital: Santa_Fe " &
_
"Admitted: January 6, 1912 " &
_
"Order: 47"
Case
"NY"
Return "Name: New_York " &
_
"Capital: Albany " &
_
"Admitted: July 26, 1788 " &
_
"Order: 11"
Case
"NC"
Return "Name: North_Carolina " &
_
"Capital: Raleigh " &
_
"Admitted: November 21, 1789 " &
_
"Order: 12"
Case
"ND"
Return "Name: North_Dakota " &
_
"Capital: Bismarck " &
_
"Admitted: November 2, 1889 " &
_
"Order: 39"
Case
"OH"
Return "Name: Ohio " &
_
"Capital: Columbus " &
_
"Admitted: March 1, 1803 " &
_
"Order: 17"
Case
"OK"
Return "Name: Oklahoma " &
_
"Capital: Oklahoma_City " &
_
"Admitted: November 16, 1907 " &
_
"Order: 46"
Case
"OR"
Return "Name: Oregon " &
_
"Capital: Salem " &
_
"Admitted: February 14, 1859 " &
_
"Order: 33"
Case
"PA"
Return "Name: Pennsylvania " &
_
"Capital: Harrisburg " &
_
"Admitted: December 12, 1787 " &
_
"Order: 2"
Case
"RI"
Return "Name: Rhode_Island " &
_
"Capital: Providence " &
_
"Admitted: May 29, 1790 " &
_
"Order: 13"
Case
"SC"
Return "Name: South_Carolina " &
_
"Capital: Columbia " &
_
"Admitted: May 23, 1788 " &
_
"Order: 8"
Case
"SD"
Return "Name: South_Dakota " &
_
"Capital: Pierre " &
_
"Admitted: November 2, 1889 " &
_
"Order: 40"
Case
"TN"
Return "Name: Tennessee " &
_
"Capital: Nashville " &
_
"Admitted: June 1, 1796 " &
_
"Order: 16"
Case
"TX"
Return "Name: Texas " &
_
"Capital: Austin " &
_
"Admitted: December 28, 1846 " &
_
"Order: 29"
Case
"UT"
Return "Name: Utah " &
_
"Capital: Salt_Lake_City " &
_
"Admitted: January 4, 1896 " &
_
"Order: 45"
Case
"VT"
Return "Name: Vermont " &
_
"Capital: Montpelier " &
_
"Admitted: March 4, 1791 " &
_
"Order: 14"
Case
"VA"
Return "Name: Virginia " &
_
"Capital: Richmond " &
_
"Admitted: June 25, 1788 " &
_
"Order: 10"
Case
"WA"
Return "Name: Washington " &
_
"Capital: Olympia " &
_
"Admitted: November 11, 1889 " &
_
"Order: 42"
Case
"WV"
Return "Name: West_Virginia " &
_
"Capital: Charleston " &
_
"Admitted: June 20, 1863 " &
_
"Order: 35"
Case
"WI"
Return "Name: Wisconsin " &
_
"Capital:
Madison " &
_
"Admitted: May 29, 1848 " &
_
"Order: 30"
Case
"WY"
Return "Name: Wyoming " &
_
"Capital: Cheyenne " &
_
"Admitted: July 10, 1890 " &
_
"Order: 44"
Case
Else
Return "您输入的值不是有效的" &
_
"州名缩写。请输入有效" &
_
"的两个字符的缩写。"
End Select
End
Function
现在,开始测试 XML Web Service。在 Project Explorer(项目资源管理器)中,选择 StatesInformation.asmx,单击鼠标右键,然后单击 Set As Start Page(设为开始页面)。按 F5 键。这将开始生成应用程序,并将 .NET 程序集和支持文件复制到 Web 服务器上的虚拟根文件夹下的 \bin 文件夹中。Microsoft Internet Explorer 启动,并且显示新 XML Web Service 的描述。
图 1:Internet Explorer 中显示的 XML Web Service 描述
单击超链接 GetStateInfo 测试该方法。在该页面中,键入两个字符的州名缩写(例如 VA)。
图 2:测试 XML Web Service 的 GetStateInfo 方法
单击 Invoke(调用)。结果如图 3 所示。
图 3:GetStateInfo 方法的结果
祝贺您!XML Web Service 已经运行,现在您需要创建客户端应用程序。
如果您不在运行 IIS 的
Web 服务器上创建此项目,就需要将其从开发计算机上复制到提供 XML Web Service 的 Web 服务器上(使用设置 Internet
Information Server 节的步骤 1 中创建的文件夹),并在服务器上进行注册,操作步骤如下:
在 Project(项目)菜单上,单击 Copy Project(复制项目)。在 Copy
Project(复制项目)对话框中,指定 Web 服务器的根目录下的 StatesInfoWS 文件夹,然后单击 OK(确定)。在发现和使用 XML Web
Service 时所需的全部文件都将被复制到该文件夹下。
要进行注册,请单击“开始”按钮,指向“运行”,然后键入以下命令(用所复制的 DLL
的绝对路径替换 <path>):
regsvr32
<path>\StatesInfoWS.dll
创建客户端应用程序
现在将在 Access 2002 中创建一个窗体来调用
XML Web Service 并显示结果。
要在 Access 中创建此应用程序,您需要在“引用”对话框(“工具”菜单)中设置对“Microsoft SOAP 类型库”(mssoap1.dll) 的引用。
启动 Access
2002。
在数据库窗口中,单击“对象”下的“窗体”,然后单击“新建”显示“新建窗体”对话框。
在“新建窗体”对话框中,选择“设计视图”,然后单击“确定”。
在“视图”菜单中,单击“属性”打开该窗体的属性表。
在属性表中,将“标题”属性中的文本改为“从
XML Web Service 获取数据”。
从“工具箱”(“视图”菜单)中将 Text Box
控件拖到窗体中。在属性表中,将“名称”属性改为“txtAbbrevName”。
单击 txtAbbrevName
控件的标签,然后将“标题”属性改为:输入两个字符的州名缩写并单击“获取信息”。
从“工具箱”中将 Command Button
控件拖到窗体中。在“命令按钮向导”屏幕中单击“取消”。在属性表中,将控件的名称改为“cmdGetInfo”。
将 cmdGetInfo
控件的“标题”属性改为“获取信息”。在属性表中,单击“事件”选项卡,单击“On Click”事件,然后单击生成按钮(带有椭圆的 ...)。
在
Visual Basic 编辑器中,首先需要添加一个对 URL 的 Web 引用,该 URL 必须包含对 XML Web Service
中可用方法的描述。在“工具”菜单中,单击“Web Service References”。
在“Web Service
References”对话框中,单击“Web Service URL”。在“URL”框中,键入指向 XML Web Service 说明文件的 URL
地址,然后单击“搜索”。对于本例中的 XML Web Service,URL 地址应该是http://localhost/StatesInformationWS/StatesInformation.asmx?wsdl。
在 Search
Results(搜索结果)框中选择“StatesInformation”。单击“+”展开节点。通过选择“GetStateInfo”并单击
Test(测试)来测试该方法。
图 4:Web Service References 对话框
单击“添加”。将 clsws_StatesInformation 类添加到“类模块”文件夹下。这个类担当代理,用于提供与 XML
Web Service 进行交互的接口及提供 XML Web Service 的本地表示形式。
双击
clsws_StatesInformation 类。在滚动显示代码时,您会看到许多由 Web Service 引用工具自动创建的事件过程,例如
Class_Initialize 和 Class_Terminate。您还会看到 wsm_GetStateInfo 函数,它用于调用您创建的 XML Web
Service 的 StatesInformation 类中的 GetStateInfo 方法。
双击窗体模块。向 cmdGetInfo_Click
事件过程中添加以下代码:
' 目的:该过程用于测试 StatesInformation XML
' Web Service
示例,方法是:调用
'
clsws_StatesInformation 代理类的
' wsm_getStateInfo
函数。然后,此方法
' 调用 XML
Web Service 来发送两个字符
' 的州名缩写并显示返回的信息。
'
' 返回:州的全称、首府、加入联邦的日期和加入
' 顺序。
'
Dim clsStatesWS As
clsws_StatesInformation
Dim strUserInfo As
String
Dim strReturn As
String
Dim strName As String
Dim strCapital As String
Dim strDate As
String
Dim strOrder As
String
Dim intStart As
Integer
Dim intEnd As
Integer
Dim intLength As Integer
On Error GoTo cmdGetInfo_Click_Err
' 创建对 clsws_StatesInformation
类的引用。
Set clsStatesWS = New
clsws_StatesInformation
Me!txtAbbrevName.SetFocus
strUserInfo =
Me!txtAbbrevName.Text
' 调用
wsm_GetStateInfo 方法。
strReturn =
Trim(clsStatesWS.wsm_GetStateInfo(strUserInfo))
' 查看是否返回了该州的信息。
If
Left(strReturn, 4) <> "Name"
Then
MsgBox strReturn, ,
"不是有效的输入项"
GoTo
cmdGetInfo_Click_End
End If
' 分析返回的字符串。
' 获取 Name 字段。
' 查找第一个“:”。
intStart = InStr(1, strReturn, ":") + 2
'
查找名称之后的第一个空格。
intEnd = (InStr(intStart, strReturn, "
"))
' 要提取的字符数。
intLength =
intEnd - intStart
strName = Mid(strReturn, intStart,
intLength)
'
查看在单词之间是否有下划线。
'
如果有,则在显示之前将其删除。
If InStr(1, strName, "_") <> 0
Then
strName =
Replace(strName, "_", " ")
End
If
Me!txtName.SetFocus
Me!txtName.Text =
strName
' 获取
Capital 字段。
' 从 Name
字段结束处开始查找
' 第二个“:”。
intStart
= InStr(intEnd, strReturn, ":") + 2
'
查找日期之后的空格。
intEnd = (InStr(intStart, strReturn, "
"))
' 要提取的字符数。
intLength =
intEnd - intStart
strCapital = Mid(strReturn,
intStart, intLength)
'
查看在单词之间是否有下划线。
'
如果有,则在显示之前将其删除。
If InStr(1, strCapital, "_") <>
0 Then
strCapital =
Replace(strCapital, "_", " ")
End
If
Me!txtCapital.SetFocus
Me!txtCapital.Text =
strCapital
' 获取 Date
字段。
intStart = InStr(intEnd, strReturn, ":") +
2
' 在日期之后查找逗点并在年份上加 6。
intEnd = (InStr(intStart, strReturn, ",") + 6)
'
要提取的字符数。
intLength = intEnd -
intStart
strDate = Mid(strReturn, intStart,
intLength)
Me!txtDate.SetFocus
Me!txtDate.Text =
strDate
'
最后,获取该州加入联邦的顺序。
strOrder = Trim(Right(strReturn,
2))
Me!txtOrder.SetFocus
Me!txtOrder.Text =
strOrder
Me!txtAbbrevName.SetFocus
cmdGetInfo_Click_End:
Exit
Sub
cmdGetInfo_Click_Err:
MsgBox Err.Number
& ":" & Err.Description
GoTo
cmdGetInfo_Click_End
关闭 Visual Basic 编辑器。
从“工具箱”中,将四个附加的 Text Box
控件添加到窗体中,放在“获取信息”按钮之下。
双击第一个 Text Box 控件以显示属性表。将控件的名称改为
txtName。
单击该控件的标签并将“标题”属性改为“名称:”。
为其余三个控件重复步骤 18 和 19,更改以下属性:Text
Box 控件的“名称”属性 与标签关联的“标题”属性
TxtCapital 首府:
TxtDate 获准日期:
txtOrder 获准顺序:
将一个 Command Button 控件拖到窗体上,放在 txtOrder
控件之下。在“命令按钮向导”页面中,在“类别”列表中选择“窗体操作”,然后在“操作”列表中选择“关闭窗体”。单击“下一步”。
在下一个屏幕中,选择“文本”并将文本改为“关闭”。单击“下一步”。
将控件的名称改为
cmdClose,然后单击“完成”。
测试 XML Web Service
现在,请打开窗体并测试 XML Web
Service。
如果显示了属性表,请将其关闭。
在“视图”菜单上,单击“窗体视图”。
在对话框中键入两个字符的州名缩写(例如,VA),然后单击“获取信息”。
对话框中将显示来自
XML Web Service 的结果,如图 5 所示。
图 5:带有 XML Web Service 结果的 Access 窗体
小结
本文示范了创建、部署和访问 XML Web Service 的方法。这个
XML Web Service 接受两个字符的美国州名缩写,并返回该州的全称、首府、加入联邦的日期和加入顺序。首先,在 Web 服务器上创建一个虚拟根。接着,在
Visual Studio .NET 中创建一个 ASP.NET Web Service 项目,并添加代码以创建 XML Web Service
的功能。然后,创建一个 Access 2002 窗体作为客户端应用程序,并测试该 XML Web Service。通过使用本文所讨论的步骤,您会发现使用
Visual Studio .NET 和 Office XP 建立、部署和测试您自己的 XML Web Service 是多么容易。