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