當前位置:工程項目OA系統(tǒng) > 泛普各地 > 河北O(jiān)A系統(tǒng) > 石家莊OA系統(tǒng) > 石家莊OA信息化
如何使用Visual Studio .NET和Office XP創(chuàng)建和部署XML Web Service
如何使用Visual Studio .NET和Office XP創(chuàng)建和部署XML Web Service
Frank C. Rice
Microsoft Corporation
2002 年 5 月
適用于:
Microsoft? Visual Studio?
.NET
Microsoft Access
2002
Microsoft Office XP Web Services
Toolkit
摘要:學習如何創(chuàng)建和部署用 Microsoft Visual Studio .NET 創(chuàng)建的 XML Web Service 示例。使用 Microsoft Access 2002 窗體來訪問 XML Web Service。
簡介
XML Web Service
為應用程序提供了一種交換數(shù)據(jù)和處理功能的方法。通常,XML Web Service 是一個存放在 Web 服務器上的動態(tài)鏈接庫 (DLL),可以通過
Internet 調(diào)用其方法。在此方案中,客戶端應用程序通過使用超文本傳輸協(xié)議 (HTTP) 發(fā)送和接收 SOAP 消息,與 XML Web Service
進行通信。
在本文中,我們將示范如何使用 Microsoft? Visual Studio? .NET 來創(chuàng)建、部署和訪問 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 創(chuàng)建一個 ASP.NET Web Service 項目。接著,向項目中添加代碼來實現(xiàn) XML Web Service。我們的 XML
Web Service 示例接受美國各州的兩個字符的州名縮寫,并返回有關該州的信息,包括該州的全名、首府、加入聯(lián)邦的日期及其加入順序。隨后,我們將在
Visual Studio .NET 中測試 XML Web Service。最后,用 Microsoft Access 2002
窗體創(chuàng)建客戶端應用程序來訪問該 XML Web Service 并顯示結(jié)果。
XML Web Service 概述
那么,創(chuàng)建和使用 XML Web
Service 要涉及到哪些操作呢?通常,用戶可能需要先導航到提供 XML Web Service 注冊(如通用說明、發(fā)現(xiàn)和集成 [UDDI] 注冊服務)的
Web 站點,查看可用的 XML Web Service。注冊服務將提供各種可用 XML Web Service 的信息,例如:提供 XML Web
Service 的公司名稱,公司 Web 站點的 URL 地址,以及用戶用來確定 XML Web Service 詳細信息的 WSDL
文件位置。
然后,開發(fā)人員使用從 WSDL 文件收集的信息來開發(fā)客戶端應用程序,以便訪問 XML Web Service 并處理結(jié)果。開發(fā)人員首先需要設置對 Microsoft SOAP 庫 (mssoap1.dll) 的引用。Microsoft SOAP 庫 (mssoap1.dll) 可以通過安裝 SOAP Toolkit 2.0 獲得。
注意:Microsoft SOAP Toolkit 2.0 SP2(英文)可從 MSDN
下載。
Microsoft SOAP 庫包含使應用程序能夠調(diào)用 XML Web Service
方法的客戶端(和服務器端)組件。然后,開發(fā)人員將設置對 WSDL 文件的 Web 引用(使用 Web Service 引用工具)。
注意:Web Service 引用工具包含在可以從 MSDN 下載的 Office XP Web Services
Toolkit(英文)中。
Web Service 引用工具會創(chuàng)建代理類(XML Web Service
在客戶端應用程序中的本地表示形式),這樣就更容易使用 HTTP 與 XML Web Service 通信。通信由來自客戶端應用程序的 SOAP 請求和來自
XML Web Service 的 SOAP 響應組成。實現(xiàn) XML Web Service 的服務器將使用“偵聽器”(包含在用于實現(xiàn)處理程序的 WSDL
文件和 Active Server Page (ASP) 文件中的代碼)接收和分析 SOAP 請求。一旦偵聽器探測到來自客戶端應用程序的 SOAP
請求,它就會分析該請求,通過傳遞任一參數(shù)調(diào)用 XML Web Service 方法,然后接收方法調(diào)用的結(jié)果。接著,偵聽器將響應包裝在另一個 SOAP
消息中,并將其發(fā)送給客戶端應用程序,最后由客戶端組件分析和處理該結(jié)果。
至此,我們就看到了如何在客戶端使用 XML Web Service。要在 Web 服務器上創(chuàng)建和實現(xiàn) XML Web Service,需要以下組件:
一個 DLL,該 DLL 包含能象 XML Web Service
一樣提供的函數(shù)(方法)。
一種方法,通過該方法可以向需要使用 XML Web Service
的客戶端通告所提供的功能、方法的名稱、所使用的輸入/輸出參數(shù)以及與 XML Web Service 相關的其他信息。這些信息由 WSDL
文件提供。
要使用 XML Web Service,您需要做的只是創(chuàng)建客戶端應用程序以便使用 WSDL 文件中包含的信息來訪問 XML Web
Service,以及確保在每個客戶端計算機上安裝 Microsoft SOAP 庫。其他可能需要的工具取決于用來創(chuàng)建客戶端的開發(fā)環(huán)境。
Visual Studio .NET 中的 XML Web
Service
Microsoft Visual Studio .NET 通過自動創(chuàng)建許多實現(xiàn) XML Web Service
時所需的文件來簡化創(chuàng)建和部署 XML Web Service 的任務。例如,Visual Studio .NET 提供了 ASP.NET Web Service
項目類型來幫助您創(chuàng)建和使用 XML Web Service。
在創(chuàng)建 ASP.NET Web Service 項目時,Visual Studio .NET 自動構(gòu)造在 Web 服務器(假設正在 Web 服務器上開發(fā) XML Web Service)上實現(xiàn) XML Web Service 所需的項目和文件。例如,Visual Studio .NET 自動創(chuàng)建一個 .asmx 文件,以便包含向 XML Web Service 添加功能的類和方法。
注意:除了 Web 類前面帶有 [WebMethod] 屬性以外,XML Web Service
類與標準類相似。
另外,Visual Studio .NET 會自動創(chuàng)建 WSDL 和 WSML 文件,甚至會提供顯示 XML Web
Service 中使用的方法和參數(shù)的信息頁。您也可以使用此頁測試 XML Web Service。
在客戶端,可以使用 Microsoft Visual Basic? 6.0、Visual Studio .NET 或 Office 應用程序(例如 Access 或 Microsoft Excel)來創(chuàng)建使用 XML Web Service 的客戶端應用程序。首先,需要設置對 WSDL 文件的引用。在 Visual Studio .NET 中實現(xiàn)的 XML Web Service 中,通過查詢字符串(例如,http://localhost/StatesInformationWS/StatesInformation.asmx?wsdl)來引用 .asmx 文件,從而實現(xiàn)對 WSDL 文件的引用。在 Visual Basic 或 Office 應用程序中,則通過使用 Web Service 引用工具來設置對 WSDL 文件的 Web 引用。Web Service 引用工具包含在可以從 MSDN 下載的 Office XP Web Services Toolkit(英文)中。
然后,Web Service 引用工具就會獲取 WSDL 文件中的信息,并創(chuàng)建 Microsoft Visual Basic for Applications (VBA) 代理類。代理類提供 XML Web Service 在客戶端應用程序中的本地表示形式。另外,因為 XML Web Service 類與客戶端應用程序中的代理連接,所以在客戶端創(chuàng)建對象時可以使用 Microsoft IntelliSense?。然后,向調(diào)用代理類中的方法的應用程序添加代碼。這樣,就可以開始使用 XML Web Service 了。
現(xiàn)在,讓我們用這些信息來使用和創(chuàng)建 XML Web Service。
創(chuàng)建 XML Web Service
要部署 XML Web
Service,需要有一個 Web 服務器,例如運行 IIS 的 Microsoft Windows? 2000 Server。然后,需要在 Web
服務器上設置一個虛擬根(也稱為“虛擬目錄”),以便存儲創(chuàng)建的 XML Web Service 文件。
設置 Internet Information Server
向 Web
服務器添加一個文件夾。可以在服務器上使用現(xiàn)有的文件夾或創(chuàng)建一個新文件夾。對于本示例,建議創(chuàng)建一個新文件夾(例如,C:StatesInfoWS)。
然后,在
IIS 中設置一個虛擬根。在控制面板中,雙擊“管理工具”,然后雙擊“Internet 服務管理器”,即顯示 Internet
信息服務控制臺。
在左側(cè)窗格中,展開包括您的 Web 服務器的節(jié)點,右鍵單擊“默認 Web
站點”節(jié)點,指向“New”,然后單擊“虛擬目錄”。這會打開虛擬目錄向?qū)А?BR>
在“歡迎使用虛擬目錄創(chuàng)建向?qū)А逼聊恢?,單擊“下一步”?BR>
在“虛擬目錄別名”屏幕中,鍵入
StatesInfoWS,然后單擊“下一步”。
在“Web 站點內(nèi)容目錄”屏幕中,鍵入步驟 1
中創(chuàng)建的文件夾的路徑,然后單擊“下一步”。
在“訪問權(quán)限”屏幕中,選擇“讀取”和“運行腳本”復選框,然后單擊“下一步”。單擊“完成”。
創(chuàng)建
ASP.NET 項目
現(xiàn)在,我們要用 GetStateInfo 方法創(chuàng)建名為 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 的模塊、一個配置文件和一個發(fā)現(xiàn)文件 (.vsdisco)。其中,配置文件包含有關 Web
服務器的配置信息,發(fā)現(xiàn)文件包含的信息使與您的服務器連接的其他應用程序能夠定位您的 XML Web Service
并查看其成員的名稱和語法。
因為在下一步驟中您將創(chuàng)建自己的文件,所以請先刪除 Service1.asmx 模塊。請選擇該文件,單擊鼠標右鍵,再單擊
Delete(刪除),然后在確認對話框中單擊 OK(確定)。
現(xiàn)在添加自己的 .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 -
兩個字符的
'
州名縮寫。
' 返回:有關該州的信息,包括全稱、首府、
' 加入聯(lián)邦的日期及其加入順序。
'
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
現(xiàn)在,開始測試 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(調(diào)用)。結(jié)果如圖 3 所示。
圖 3:GetStateInfo 方法的結(jié)果
祝賀您!XML Web Service 已經(jīng)運行,現(xiàn)在您需要創(chuàng)建客戶端應用程序。
如果您不在運行 IIS 的
Web 服務器上創(chuàng)建此項目,就需要將其從開發(fā)計算機上復制到提供 XML Web Service 的 Web 服務器上(使用設置 Internet
Information Server 節(jié)的步驟 1 中創(chuàng)建的文件夾),并在服務器上進行注冊,操作步驟如下:
在 Project(項目)菜單上,單擊 Copy Project(復制項目)。在 Copy
Project(復制項目)對話框中,指定 Web 服務器的根目錄下的 StatesInfoWS 文件夾,然后單擊 OK(確定)。在發(fā)現(xiàn)和使用 XML Web
Service 時所需的全部文件都將被復制到該文件夾下。
要進行注冊,請單擊“開始”按鈕,指向“運行”,然后鍵入以下命令(用所復制的 DLL
的絕對路徑替換 <path>):
regsvr32
<path>StatesInfoWS.dll
創(chuàng)建客戶端應用程序
現(xiàn)在將在 Access 2002 中創(chuàng)建一個窗體來調(diào)用
XML Web Service 并顯示結(jié)果。
要在 Access 中創(chuàng)建此應用程序,您需要在“引用”對話框(“工具”菜單)中設置對“Microsoft SOAP 類型庫”(mssoap1.dll) 的引用。
啟動 Access
2002。
在數(shù)據(jù)庫窗口中,單擊“對象”下的“窗體”,然后單擊“新建”顯示“新建窗體”對話框。
在“新建窗體”對話框中,選擇“設計視圖”,然后單擊“確定”。
在“視圖”菜單中,單擊“屬性”打開該窗體的屬性表。
在屬性表中,將“標題”屬性中的文本改為“從
XML Web Service 獲取數(shù)據(jù)”。
從“工具箱”(“視圖”菜單)中將 Text Box
控件拖到窗體中。在屬性表中,將“名稱”屬性改為“txtAbbrevName”。
單擊 txtAbbrevName
控件的標簽,然后將“標題”屬性改為:輸入兩個字符的州名縮寫并單擊“獲取信息”。
從“工具箱”中將 Command Button
控件拖到窗體中。在“命令按鈕向?qū)А逼聊恢袉螕簟叭∠薄T趯傩员碇?,將控件的名稱改為“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(搜索結(jié)果)框中選擇“StatesInformation”。單擊“+”展開節(jié)點。通過選擇“GetStateInfo”并單擊
Test(測試)來測試該方法。
圖 4:Web Service References 對話框
單擊“添加”。將 clsws_StatesInformation 類添加到“類模塊”文件夾下。這個類擔當代理,用于提供與 XML
Web Service 進行交互的接口及提供 XML Web Service 的本地表示形式。
雙擊
clsws_StatesInformation 類。在滾動顯示代碼時,您會看到許多由 Web Service 引用工具自動創(chuàng)建的事件過程,例如
Class_Initialize 和 Class_Terminate。您還會看到 wsm_GetStateInfo 函數(shù),它用于調(diào)用您創(chuàng)建的 XML Web
Service 的 StatesInformation 類中的 GetStateInfo 方法。
雙擊窗體模塊。向 cmdGetInfo_Click
事件過程中添加以下代碼:
' 目的:該過程用于測試 StatesInformation XML
' Web Service
示例,方法是:調(diào)用
'
clsws_StatesInformation 代理類的
' wsm_getStateInfo
函數(shù)。然后,此方法
' 調(diào)用 XML
Web Service 來發(fā)送兩個字符
' 的州名縮寫并顯示返回的信息。
'
' 返回:州的全稱、首府、加入聯(lián)邦的日期和加入
' 順序。
'
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
' 創(chuàng)建對 clsws_StatesInformation
類的引用。
Set clsStatesWS = New
clsws_StatesInformation
Me!txtAbbrevName.SetFocus
strUserInfo =
Me!txtAbbrevName.Text
' 調(diào)用
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, "
"))
' 要提取的字符數(shù)。
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
字段結(jié)束處開始查找
' 第二個“:”。
intStart
= InStr(intEnd, strReturn, ":") + 2
'
查找日期之后的空格。
intEnd = (InStr(intStart, strReturn, "
"))
' 要提取的字符數(shù)。
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)
'
要提取的字符數(shù)。
intLength = intEnd -
intStart
strDate = Mid(strReturn, intStart,
intLength)
Me!txtDate.SetFocus
Me!txtDate.Text =
strDate
'
最后,獲取該州加入聯(lián)邦的順序。
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 控件的“名稱”屬性 與標簽關聯(lián)的“標題”屬性
TxtCapital 首府:
TxtDate 獲準日期:
txtOrder 獲準順序:
將一個 Command Button 控件拖到窗體上,放在 txtOrder
控件之下。在“命令按鈕向?qū)А表撁嬷?,在“類別”列表中選擇“窗體操作”,然后在“操作”列表中選擇“關閉窗體”。單擊“下一步”。
在下一個屏幕中,選擇“文本”并將文本改為“關閉”。單擊“下一步”。
將控件的名稱改為
cmdClose,然后單擊“完成”。
測試 XML Web Service
現(xiàn)在,請打開窗體并測試 XML Web
Service。
如果顯示了屬性表,請將其關閉。
在“視圖”菜單上,單擊“窗體視圖”。
在對話框中鍵入兩個字符的州名縮寫(例如,VA),然后單擊“獲取信息”。
對話框中將顯示來自
XML Web Service 的結(jié)果,如圖 5 所示。
圖 5:帶有 XML Web Service 結(jié)果的 Access 窗體
小結(jié)
本文示范了創(chuàng)建、部署和訪問 XML Web Service 的方法。這個
XML Web Service 接受兩個字符的美國州名縮寫,并返回該州的全稱、首府、加入聯(lián)邦的日期和加入順序。首先,在 Web 服務器上創(chuàng)建一個虛擬根。接著,在
Visual Studio .NET 中創(chuàng)建一個 ASP.NET Web Service 項目,并添加代碼以創(chuàng)建 XML Web Service
的功能。然后,創(chuàng)建一個 Access 2002 窗體作為客戶端應用程序,并測試該 XML Web Service。通過使用本文所討論的步驟,您會發(fā)現(xiàn)使用
Visual Studio .NET 和 Office XP 建立、部署和測試您自己的 XML Web Service 是多么容易。
- 1Web Services Interoperability and SOAP
- 2Web服務的“租用”本質(zhì)
- 321世紀企業(yè)文化發(fā)展的六大趨勢
- 42009金和協(xié)同管理“破冰之旅”助企業(yè)安然渡冬
- 5Web服務設計師,第5部分:基于付費Web服務的障礙
- 6bindingTemplate與Web服務調(diào)用
- 7OA網(wǎng)絡辦公系統(tǒng)信息傳遞的安全解決方案
- 8Web服務內(nèi)幕,第9部分:研究問題--安全性與保密性
- 9Web服務內(nèi)幕,第5部分:進入流--用WSFL建模的商業(yè)流程
- 10石家莊OA信息化的基本XML和RDF技術(三):語義知識
- 11當軟件變成服務時
- 12[原創(chuàng)]OA選擇首先要清晰概念
- 13Web服務準備:理解和使用Web服務托管技術
- 14架構(gòu)Web Service:交互界面,Web服務定義的核心
- 15Building a Stock-Quotes Web Service
- 16WebLogic Workshop給非開發(fā)人員帶來Web服務
- 17OA支持工作流報表的格式自定義——通過工作流報表
- 18ITToolBox e-Business(by AMT整理)
- 19從知識的角度回顧企業(yè)能力理論-摘錄
- 20MSDN Online Voices - Extreme XML:已啟用XML Web服務的Office文檔
- 21兩款常用的測試bug管理與壓力測試軟件
- 22Web服務設計師,第6部分:基于付費的Web服務的催化劑
- 23知識的經(jīng)濟學性質(zhì)
- 24Sun拒入“WS-I” 不想跟微軟IBM玩游戲
- 25不僅看投資回報,還要看“知識回報”
- 26知識的過程管理
- 27一個副總裁的辭呈:癱瘓的信息化系統(tǒng)和人心
- 28非常漂亮的一個模型
- 29理解Web服務互操作性
- 30Web服務的(革)創(chuàng)新,第1部分
成都公司:成都市成華區(qū)建設南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓
版權(quán)所有:泛普軟件 渝ICP備14008431號-2 渝公網(wǎng)安備50011202501700號 咨詢電話:400-8352-114