使用 Visual Studio 2005 用戶端 (Visual Basic) 傳送 SOAP 要求
此主題中的範例類似於<使用 Visual Studio 2005 用戶端 (C#) 傳送 SOAP 要求>中所提供的範例。唯一的差異處在於,這個範例是以 Visual Basic 撰寫。因此,此主題中僅提供建立範例所需的程式碼和步驟。
建立工作範例
因為建立這個範例需要許多步驟,所以此應用程式分成四個部分:
- 第 1 部分:執行預存程序。
- 第 2 部分:執行不含參數的 SQL 查詢。
- 第 3 部分:執行含參數的 SQL 查詢。
- 第 4 部分:執行使用者自訂函數。
每個部分各提供一組指示。您可以在各部分結束時,測試應用程式。
若要建立必要的 Proxy 類別
- 在電腦上建立這個應用程式的資料夾。
- 在用戶端電腦上,從 [Microsoft Visual Studio 2005] 程式群組啟動 Microsoft Visual Studio 2005。
- 按一下 [新增專案]。
- 選取 [Visual Basic 專案] 作為 [專案類型]。
- 在 [名稱] 文字方塊中,指定 NativeSOAPApp2。
- 在 [位置] 文字方塊中,指定用來儲存專案的資料夾路徑。
- 選取 [Windows 應用程式] 作為 [範本],然後按一下 [確定]。
- 在 [方案總管] 視窗中,以滑鼠右鍵按一下 [參考],然後選取 [加入 Web 參考]。加入 Web 參考的另一個方法是,選取 [專案] 功能表上的 [加入 Web 參考]。
- 在 [位址] 方塊中,鍵入 https://Server/sql?wsdl,其中 Server 是伺服器的名稱,然後按 ENTER 鍵。如果成功產生 WSDL,您會看到端點描述。這時,請按一下 [AddReference]。這會建立必要的 Proxy 類別,讓您呼叫 WSDL 文件中的方法。
第 1 部分:執行預存程序
在這個部分中,應用程式會要求 GetCustomerInfo Web 方法。
- 在 Form1 中,加入文字方塊 (textBox1)、按鈕 (button1) 和清單方塊 (listBox1)。
- 以滑鼠右鍵按一下 [文字方塊],然後選取 [屬性]。將 [Text] 的值從 textBox1 變更為 1。這是預設的客戶識別碼值。
- 以滑鼠右鍵按一下 [button1],然後選取 [屬性]。
- 將 Text 屬性值從 button1 變更為 ExecSP。
- 將 (name) 屬性值變更為 ExecSP。
- 以滑鼠右鍵按一下文字方塊 (listBox1),然後選取 [屬性]。將 HorizontalScrollbar 屬性值變更為 True。
- 連按兩下 [ExecSP]。
- 將<ExecSP 的 Visual Basic 程式碼清單>中的程式碼複製到這個函數。
- 更新程式碼。變更對
server
的參考,成為以 CREATE ENDPOINT 建立端點時所識別的主機名稱。 - 儲存並編譯專案。如需詳細資訊,請參閱前面的段落「編譯程式碼」。
第 2 部分:執行不含參數的 SQL 查詢
在這個部分中,用戶端應用程式會執行特定查詢 (FOR XML 查詢),從 AdventureWorks 資料庫中的 Employee 資料表擷取三個員工。
- 在 Form1 的 [設計] 索引標籤中,加入另一個按鈕 (button1)。
- 以滑鼠右鍵按一下這個新按鈕,然後選取 [屬性]。
- 將 Text 屬性值從 button1 變更為 ExecBatchFindAllEmps。
- 將 (name) 屬性值變更為 ExecBatchFindAllEmps。
- 連按兩下 [ExecBatchFindAllEmp]。
- 將<FindAllEmps 的 Visual Basic 程式碼清單>中的程式碼複製到這個函數。
- 更新程式碼。變更對
server
的參考,成為以 CREATE ENDPOINT 建立端點時所識別的主機名稱。 - 儲存並編譯專案。如需詳細資訊,請參閱前面的段落「編譯程式碼」。
第 3 部分:執行含參數的 SQL 查詢
這個部分類似上一個部分,除了此特定查詢的 SOAP 要求會包含查詢參數。FOR XML 查詢會擷取指定之員工識別碼的員工資訊。
- 在 Form1 的 [設計] 索引標籤中,加入按鈕 (button1)。
- 以滑鼠右鍵按一下這個新按鈕,然後選取 [屬性]。
- 將 Text 屬性值從 button1 變更為 ExecBatchFindAnEmp。
- 將 (name) 屬性值變更為 ExecBatchFindAnEmp。
- 連按兩下 [ExecBatchFindAnEmp]。
- 將<FindAnEmp 的 Visual Basic 程式碼清單>中的程式碼複製到這個函數。
- 更新程式碼。變更對
server
的參考,成為以 CREATE ENDPOINT 建立端點時所識別的主機名稱。 - 儲存並編譯專案。如需詳細資訊,請參閱前面的段落「編譯程式碼」。
第 4 部分:執行使用者自訂函數
在這個部分中,用戶端應用程式會傳送 UDFReturningScalar Web 方法的 SOAP 要求。這個 Web 方法對應傳回整數值的使用者自訂函數。
- 在 Form1 的 [設計] 索引標籤中,加入另一個按鈕 (button1)。
- 以滑鼠右鍵按一下這個新按鈕,然後選取 [屬性]。
- 將 Text 屬性值從 button1 變更為 ExecUDFReturningScalar。
- 將 (name) 屬性值變更為 ExecUDFReturningScalar。
- 連按兩下 [ExecUDFReturningScalar]。
- 將<ExecUDF 的 Visual Basic 程式碼清單>中的程式碼複製到這個函數。
- 更新程式碼。變更對 server 的參考,成為以 CREATE ENDPOINT 建立端點時所識別的主機名稱。
- 儲存並編譯專案。如需詳細資訊,請參閱前面的段落「編譯程式碼」。
因為端點指定「整合式驗證」,所以程式碼中會出現下列一行文字:proxy.Credentials = System.Net.CredentialCache.DefaultCredentials
。
如果您使用 SQL Server 驗證,建議您移除這行文字,取代成實作 WS-Security 標頭的程式碼,以提供以 SQL Server 為基礎的驗證認證。如需詳細資訊,請參閱<透過 SOAP 的 SQL Server 驗證>。
附註: |
---|
如果您使用 SQL Server 驗證或基本驗證,SQL Server 2005 會要求您使用安全通訊端層 (SSL),以安全加密方式傳輸使用者認證 (否則為可見的純文字)。如需有關如何允許 SSL 搭配 HTTP 端點使用的詳細資訊,請參閱<設定 SSL 使用的憑證>。 |
編譯程式碼
SQL Server 2005 在安裝過程中會安裝 Microsoft .NET Framework 2.0。以下這些編譯指示是使用最新版的 .NET Framework (即 \WINDOWS\Microsoft.NET\Framework 資料夾的最大數字)。
若要編譯程式碼
- 儲存整個專案。
開啟命令提示字元,找出儲存專案所在的資料夾。
在這個資料夾中,複製 Web Reference\Server 子資料夾的 Reference.vb 檔案 (例如,複製 "Web Reference\Server\Reference.vb")。Form1.vb 和 Reference.vb 檔案應該在相同的資料夾中。
編譯程式碼並指定可執行檔 (.exe) 的名稱。例如,如果可執行檔名稱是 NativeSOAPApp2.exe,則命令列如下:
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\vbc.exe /out:NativeSOAPApp2.exe /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:Microsoft.VisualBasic.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /m:Form1 Form1.vb Reference.vb
xxxxx 是對應 .NET Framework 版本的資料夾號碼。
這會在目前的目錄中建立可執行檔 (NativeSOAPApp2.exe)。附註: 如果您使用舊版的 .NET Framework,則會收到執行階段錯誤。如果發生錯誤,請嘗試將 FOR XML AUTO
子句加入至SELECT
陳述式結尾,更新 GetCustomerInfo 預存程序,如下所示:SELECT TOP 3 SalesOrderID, OrderDate FROM SalesOrderHeader WHERE CustomerID = @CustomerID FOR XML AUTO
清單方塊中會顯示執行預存程序後的結果。
請參閱
參考
設定伺服器接聽原生 XML Web Service 的要求
SOAP 要求與回應訊息結構
傳送原生 XML Web Service 要求的範例應用程式
原生 XML Web Service 中的指導方針和限制