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 クライアントからアクセスします。

 

レッスン 1:要求を受信して応答を送信する Web サーバの設定

このレッスンの目標は、Web サービスが実行されている SQL Anywhere 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();

    この文は、Web クライアントがサービスに要求を送ると、Echo という名前のストアドプロシージャを呼び出す EchoService という名前の新しいサービスを作成します。Web クライアントのフォーマットがない (RAW) HTTP 応答本文を生成します。別のユーザ ID でログインする場合、そのユーザ ID を反映するように USER DBA を変更する必要があります。

  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

    このプロシージャは、Content-Type ヘッダと Web クライアントに送信される応答の本文をフォーマットします。

結果

Web サーバは要求を受信して応答を送信するように設定されます。

 参照