監(jiān)理公司管理系統(tǒng) | 工程企業(yè)管理系統(tǒng) | OA系統(tǒng) | ERP系統(tǒng) | 造價咨詢管理系統(tǒng) | 工程設計管理系統(tǒng) | 甲方項目管理系統(tǒng) | 簽約案例 | 客戶案例 | 在線試用
X 關閉

如何使用Visual Studio .NET和Office XP創(chuàng)建和部署XML Web Service

申請免費試用、咨詢電話: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

摘要:學習如何創(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 是多么容易。

 

發(fā)布:2007-03-25 13:29    編輯:泛普軟件 · xiaona    [打印此頁]    [關閉]
相關文章:
石家莊OA系統(tǒng)
聯(lián)系方式

成都公司:成都市成華區(qū)建設南路160號1層9號

重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務大廈18樓

咨詢:400-8352-114

加微信,免費獲取試用系統(tǒng)

QQ在線咨詢