Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - 编程 » HTTP Web 服务 » 使用 Web 客户端访问 Web 服务

 

使用 SQL Anywhere 作为 Web 客户端的快速入门

本主题介绍了如何使用 SQL Anywhere 作为 Web 客户端应用程序来连接 SQL Anywhere HTTP 服务器和访问通用 HTTP Web 服务。它不会全面介绍 SQL Anywhere 的 Web 客户端功能。虽然许多 SQL Anywhere Web 客户端功能都可用,但超出了本主题的范畴。

执行以下任务:

  • 创建并启动 SQL Anywhere Web 客户端。

  • 创建连接 HTTP 服务器上的 Web 服务的过程。

  • 在 HTTP 服务器发送的结果集上执行操作。

您可以开发连接任何类型在线 Web 服务器的 SQL Anywhere Web 客户端应用程序,但本指南假定您在 8082 端口上启用了一个本地 SQL Anywhere HTTP 服务器,并打算连接由以下 SQL 语句创建的名为 SampleHTMLService 的 Web 服务:



CREATE SERVICE SampleHTMLService
    TYPE 'HTML'
    USER DBA
    AUTHORIZATION OFF
    AS CALL sp_echo(:i, :f, :s);

CREATE PROCEDURE sp_echo(i INTEGER, f REAL, s LONG VARCHAR)
RESULT(ret_i INTEGER, ret_f REAL, ret_s LONG VARCHAR)
BEGIN
    SELECT i, f, s;
END;

有关设置 HTTP 服务器的详细信息,请参见将 SQL Anywhere 用作 HTTP Web 服务器的快速入门

 ♦ 创建 SQL Anywhere Web 客户端应用程序
  1. 如果尚未创建 SQL Anywhere 客户端数据库,运行以下命令来创建:

    dbinit client-database-name

    client-database-name 替换为新客户端数据库的名称。

  2. 运行以下命令启动客户端数据库:

    dbsrv12 client-database-name.db
  3. 运行以下命令来通过 Interactive SQL 连接客户端数据库:

    dbisql -c "UID=DBA;PWD=sql;SERVER=client-database-name"
  4. 使用以下 SQL 语句来创建一个连接到 SampleHTMLService Web 服务的新客户端过程:

    CREATE PROCEDURE client_post(f REAL, i INTEGER, s VARCHAR(16), x VARCHAR(16))
        URL 'http://localhost:8082/SampleHTMLService'
        TYPE 'HTTP:POST'
        HEADER 'User-Agent:SATest';
  5. 执行以下 SQL 语句来调用客户端过程,并向 Web 服务器发送 HTTP 请求:

    CALL client_post(3.14, 9, 's varchar', 'x varchar');

client_post 创建的 HTTP POST 请求与其类似。



POST /SampleHTMLService HTTP/1.0
ASA-Id: ea1746b01cd0472eb4f0729948db60a2
User-Agent: SATest
Accept-Charset: windows-1252, UTF-8, *
Date: Wed, 9 Jun 2010 21:55:01 GMT
Host: localhost:8082
Connection: close
Content-Type: application/x-www-form-urlencoded; charset=windows-1252
Content-Length: 58

&f=3.1400001049041748&i=9&s=s%20varchar&x=x%20varchar

在 Web 服务器上运行的 Web 服务 SampleHTMLService 从 POST 请求中为 ifs 抽取参数值,并将它们作为参数传递至 sp_echo 过程。参数值 x 将被忽略。sp_echo 过程创建一个可返回至 Web 服务的结果集。务必注意,客户端和 Web 服务之间的参数名称的一致性对正确映射至关重要。

Web 服务会创建发回客户端的响应。Interactive SQL 显示的输出应当和以下输出类似:

Attribute Value
Status HTTP /1.1 200 OK
Body


<html>
<head>
<title>/SampleHTMLService</title></head>
<body>
<h3>/SampleHTMLService</h3>
<table border=1>
<tr class="header"><th><b>ret_i</b></th>
<th><b>ret_f</b></th>
<th><b>ret_s</b></th>
</tr>
<tr><td>9</td><td>3.1400001049041748</td><td>s varchar</td>
Date Wed, 09 Jun 2010 21:55:01 GMT
Connection close
Expires Wed, 09 Jun 2010 21:55:01 GMT
Content-Type text/html; charset=windows-1252
Server SQLAnywhere/12.0.1
 另请参见