以下教程演示了如何使用 Visual C# 从 Microsoft .NET 访问 Web 服务。
在命令提示符处,运行以下命令以启动个人 Web 服务器。将 samples-dir 替换为示例数据库的实际位置。-xs http(port=80)
选项会告知数据库服务器接受来自端口 80 的 HTTP 请求。如果在端口 80 上已有 Web 服务器在运行,则将另一个端口号(如 8080)用于本教程,并在所有端口引用中使用 8080 来代替 80。
dbeng11 -xs http(port=80) samples-dir\demo.db |
启动 Interactive SQL。以 DBA 身份连接到 SQL Anywhere 示例数据库。执行以下语句:
定义一个列出 Employees 表的 SOAP 服务。
CREATE SERVICE "SASoapTest/EmployeeList" TYPE 'SOAP' AUTHORIZATION OFF SECURE OFF USER DBA AS SELECT * FROM Employees; |
由于授权已关闭,因此任何人都可使用此服务而无需提供用户名和口令。命令在用户 DBA 下运行。这种安排方式虽然简单,但不安全。
创建一个 DISH 服务以充当 SOAP 服务的代理并生成 WSDL 文档。
CREATE SERVICE "SASoapTest_DNET" TYPE 'DISH' GROUP "SASoapTest" FORMAT 'DNET' AUTHORIZATION OFF SECURE OFF USER DBA; |
SOAP 和 DISH 服务必须为 DNET 格式。在本示例中,创建 SOAP 服务时省略了 FORMAT 子句。这样,SOAP 服务将从 DISH 服务继承 DNET 格式。
启动 Microsoft Visual Studio。请注意,本示例使用 .NET Framework 2.0 中的函数。
使用 Visual C# 新建一个 [Windows Application] 项目。
将出现一个空的窗体。
从 [Project] 菜单中,选择 [Add Web Reference]。
在 [Add Web Reference] 页面的 [URL] 字段中,输入以下 URL: http://localhost:80/demo/SASoapTest_DNET.
单击 [Go]。
此时显示可供用于 SASoapTest_DNET 的方法的列表。您将看到 EmployeeList 方法。
单击 [Add Reference] 完成操作。
[Solution Explorer] 窗口即会显示新的 Web 引用。
在 Visual Studio [Toolbox] 中,向窗体添加一个列表框和一个按钮,如下图所示。
将按钮文本重命名为 Employee List。
双击 [Employee List],然后为按钮的 click 事件添加以下代码。
int sqlCode; listBox1.Items.Clear(); localhost.SASoapTest_DNET proxy = new localhost.SASoapTest_DNET(); DataSet results = proxy.EmployeeList(out sqlCode); DataTableReader dr = results.CreateDataReader(); while (dr.Read()) { for (int i = 0; i < dr.FieldCount; i++) { string columnName = dr.GetName(i); try { string value = dr.GetString(i); listBox1.Items.Add(columnName + "=" + value); } catch ( InvalidCastException ) { listBox1.Items.Add(columnName + "=(null)"); } } listBox1.Items.Add(""); } dr.Close(); |
构建并运行程序。
列表框将以 column name=value 对的形式显示 EmployeeList 结果集。
会包括一个 try/catch 块来处理 NULL 列值(例如可以在 Employees 表的 TerminationDate 列中找到的列值)。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |