Das Ziel dieser Lektion ist das Einrichten eines SQL Anywhere-Webservers, auf dem ein Webdienst ausgeführt wird.
Voraussetzungen
In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Webserver erstellen und über einen Webclient darauf zugreifen.
Erstellen Sie eine SQL Anywhere-Datenbank, die verwendet wird, um Webdienstdefinitionen zu speichern.
dbinit -dba DBA,sql echo |
Starten Sie einen Netzwerk-Datenbankserver mit dieser Datenbank. Dieser Server fungiert als Webserver.
dbsrv16 -xs http(port=8082) -n echo echo.db |
Der HTTP-Webserver ist so eingestellt, dass er Port 8082 auf Anforderungen abhört. Verwenden Sie eine andere Portnummer, wenn 8082 in Ihrem Netzwerk nicht zulässig ist.
Stellen Sie über Interactive SQL eine Verbindung mit dem Datenbankserver her.
dbisql -c "UID=DBA;PWD=sql;SERVER=echo" |
Erstellen Sie einen neuen Webdienst zum Annehmen der eingehenden Anforderungen.
CREATE SERVICE EchoService TYPE 'RAW' AUTHORIZATION OFF SECURE OFF USER DBA AS CALL Echo(); |
Diese Anweisung erstellt einen neuen Dienst mit dem Namen EchoService, der eine gespeicherte Prozedur mit dem Namen Echo aufruft, wenn ein Webclient eine Anforderung an den Dienst sendet. Sie generiert den Haupttext einer HTTP-Antwort ohne Formatierung (RAW) für den Webclient. Wenn Sie sich mit einer anderen Benutzer-ID angemeldet haben, muss die USER DBA-Klausel gemäß Ihrer Benutzer-ID geändert werden.
Erstellen Sie die Echo-Prozedur zum Bearbeiten von eingehenden Anforderungen.
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 |
Diese Prozedur formatiert den Content-Type-Header und den Hauptteil der Antwort, die an den Webclient gesendet wird.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |