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 (Deutsch) » SQL Anywhere Server - Programmierung » HTTP-Webdienste » Zugriff auf Webdienste mithilfe von Webclients

 

Kurzeinführung zur Verwendung von SQL Anywhere als Webclient

Dieser Abschnitt veranschaulicht die Verwendung von SQL Anywhere als Webclientanwendung, über die eine Verbindung zu einem SQL Anywhere-HTTP-Server hergestellt sowie auf einen allgemeinen HTTP-Webdienst zugegriffen werden kann. Sie veranschaulicht nicht den vollen Umfang der Fähigkeiten des SQL Anywhere-Webclients. Es sind viele SQL Anywhere-Webclient-Funktionen verfügbar, die unter diesem Thema nicht alle behandelt werden können.

Sie können SQL Anywhere-Webclientanwendungen entwickeln, die eine Verbindung mit jedem beliebigen Online-Webservertyp herstellen, aber in diesem Abschnitt wird davon ausgegangen, dass Sie einen lokalen SQL Anywhere-HTTP-Server an Port 8082 gestartet haben und eine Verbindung mit einem Webdienst namens SampleHTMLService herstellen möchten, der mit den folgenden SQL-Anweisungen erstellt wurde:



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;

Führen Sie die folgenden Aufgaben aus, um eine SQL Anywhere-Webclientanwendung zu erstellen:

  1. Führen Sie den folgenden Befehl aus, um eine SQL Anywhere-Clientdatenbank zu erstellen, falls noch keine existiert:

    dbinit -dba DBA,sql client-database-name

    Ersetzen Sie Clientdatenbank-Name durch einen neuen Namen für Ihre Clientdatenbank.

  2. Führen Sie den folgenden Befehl aus, um die Clientdatenbank zu starten:

    dbsrv16 client-database-name.db
  3. Führen Sie den folgenden Befehl aus, um eine Verbindung zur Clientdatenbank mithilfe von Interactive SQL herzustellen:

    dbisql -c "UID=DBA;PWD=sql;SERVER=client-database-name"
  4. Erstellen Sie eine neue Clientprozedur, die eine Verbindung zum Webdienst SampleHTMLService mithilfe der folgenden SQL-Anweisung herstellen:

    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. Führen Sie die folgende SQL-Anweisung aus, um die Clientprozedur aufzurufen und eine HTTP-Anforderung an den Webserver zu senden:

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

client_post erstellt eine HTTP POST-Anforderung ähnlich der folgenden Ausgabe:



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

Der Webdienst SampleHTMLService auf dem Webserver extrahiert die Parameterwerte für i, f und s aus der POST-Anforderung und übergibt sie als Parameter an die Prozedur sp_echo. Parameterwert x wird ignoriert. Die Prozedur sp_echo erstellt eine Ergebnismenge, die an den Webdienst zurückgegeben wird. Eine Vereinbarung der Parameternamen zwischen dem Client und dem Webserver ist für die richtige Zuordnung von entscheidender Bedeutung.

Der Webdienst erstellt die Antwort, die an den Client zurückgesendet wird. Die in Interactive SQL angezeigte Ausgabe sollte ähnlich wie die folgende Ausgabe sein:

Attribut Wert
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/16.0
 Siehe auch