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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 服务器 - 编程 » HTTP Web 服务 » HTTP Web 服务示例 » 教程:创建一个 Web 服务器并从 Web 客户端访问此 Web 服务器

 

第 1 课:设置用于接收请求和发送响应的 Web 服务器

本课的目标是设置运行 Web 服务的 SQL Anywhere Web 服务器。

前提条件

本课假定您拥有在教程教程:创建一个 Web 服务器并从 Web 客户端访问此 Web 服务器开头的特权部分中列出的角色和特权。

 任务
  1. 创建将用于包含 Web 服务定义的 SQL Anywhere 数据库。

    dbinit -dba DBA,sql echo
  2. 使用此数据库启动网络数据库服务器。此服务器将充当 Web 服务器。

    dbsrv16 -xs http(port=8082) -n echo echo.db

    将 HTTP Web 服务器设置为监听端口 8082 上的请求。如果网络禁用了 8082 端口,则使用其它端口号。

  3. 使用 Interactive SQL 连接到数据库服务器。

    dbisql -c "UID=DBA;PWD=sql;SERVER=echo"
  4. 创建新的 Web 服务来接受进来的请求。

    CREATE SERVICE EchoService
    TYPE 'RAW'
    AUTHORIZATION OFF
    SECURE OFF
    USER DBA
    AS CALL Echo();

    上述语句创建一个名为 EchoService 的新服务,该服务将在 Web 客户端向其发送请求时调用一个名为 Echo 的存储过程。它会为 Web 客户端生成没有任何格式设置 (RAW) 的 HTTP 响应正文。如果使用其他用户 ID 登录,则必须对 USER DBA 子句进行更改以反映您的用户 ID。

  5. 创建 Echo 过程以处理进来的请求。



    CREATE OR REPLACE PROCEDURE Echo()
    BEGIN
        DECLARE request_body LONG VARCHAR;
        DECLARE request_mimetype LONG VARCHAR;
    
        SET request_mimetype = http_header( 'Content-Type' );
        SET request_body = isnull( http_variable('text'), http_variable('body') );
        IF request_body IS NULL THEN
            CALL sa_set_http_header('Content-Type', 'text/plain' );
            SELECT 'failed'
        ELSE
            CALL sa_set_http_header('Content-Type', request_mimetype );
            SELECT request_body;
        END IF;
    END

    此过程将为发送到 Web 客户端的响应的 Content-Type 标头和正文设置格式。

结果

Web 服务器已设置为接收请求和发送响应。

 另请参见