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 » Beispiele für HTTP-Webdienste » Praktische Einführung: Webserver erstellen und über einen Webclient darauf zugreifen

 

Lektion 2: Anforderungen über einen Webclient senden und Antworten empfangen

In dieser Lektion richten Sie einen Datenbankclient ein, um Anforderungen mit der POST-Methode an einen Webserver zu senden und die Antworten des Webservers zu empfangen.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie einen Webserver gemäß den Anweisungen in Lektion 1 eingerichtet haben. Weitere Hinweise zum Einrichten eines Datenbankservers für den Empfang der Anforderungen von dem in dieser Lektion beschriebenen Webclient finden Sie unter Lektion 1: Webserver für das Empfangen von Anforderungen und das Senden von Antworten einrichten.

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.

Kontext und Bemerkungen

Diese Lektion enthält mehrere Verweise auf localhost. Verwenden Sie statt localhost den Hostnamen oder die IP-Adresse des Webservers aus Lektion 1, wenn der Webclient nicht auf demselben Computer ausgeführt wird wie der Webserver.

 Aufgabe
  1. Erstellen Sie eine SQL Anywhere-Datenbank, die verwendet wird, um Webclient-Prozeduren zu speichern.

    dbinit -dba DBA,sql echo_client
  2. Starten Sie einen Netzwerk-Datenbankserver mit dieser Datenbank. Dieser Server fungiert als Webclient.

    dbsrv16 echo_client.db
  3. Stellen Sie über Interactive SQL eine Verbindung mit dem Datenbankserver her.

    dbisql -c "UID=DBA;PWD=sql;SERVER=echo_client"
  4. Erstellen Sie eine neue gespeicherte Prozedur zum Senden von Anforderungen an einen Webdienst.

    CREATE OR REPLACE PROCEDURE SendWithMimeType( 
        value LONG VARCHAR, 
        mimeType LONG VARCHAR, 
        urlSpec LONG VARCHAR
    )
    URL '!urlSpec'
    TYPE 'HTTP:POST:!mimeType';

    Die SendWithMimeType-Prozedur hat drei Parameter. Der value-Parameter stellt den Hauptteil der Anforderung dar, die an den Webdienst gesendet werden soll. Der urlSpec-Parameter gibt die URL an, die für die Verbindung mit dem Webdienst verwendet werden soll. mimeType gibt an, welcher MIME-Typ für HTTP:POST verwendet werden soll.

  5. Senden Sie eine Anforderung an den Webserver und rufen Sie die Antwort ab.

    CALL SendWithMimeType('<hello>this is xml</hello>', 
        'text/xml', 
        'http://localhost:8082/EchoService'
    );

    Die http://localhost:8082/EchoService-Zeichenkette gibt an, dass der Webserver auf localhost ausgeführt wird und Port 8082 abhört. Der gewünschte Webdienst hat den Namen EchoService.

  6. Probieren Sie einen anderen MIME-Typ aus und beobachten Sie die Antwort.

    CALL SendWithMimeType('{"menu": {  "id": "file", "value": "File", "popup": {
        "menuitem": [{"value": "New", "onclick": "CreateNew()"},
                     {"value": "Open", "onclick": "Open()"},
                     {"value": "Close", "onclick": "Close()"} ] } } }', 
        'application/json', 
        'http://localhost:8082/EchoService'
    );

Ergebnisse

Ein Webclient wird eingerichtet, um Anforderungen mit der POST-Methode an einen Webserver zu senden und die Antworten des Webservers zu empfangen.

Beispiel

Das folgende Beispiel ist eine Ergebnismenge, wie sie von Interactive SQL angezeigt wird:

Attribut Wert
Status HTTP/1.1 200 OK
Body <hello>this is xml</hello>
Server SQLAnywhere/16.0.1234
Expires Tue, 09 Oct 2012 21:06:01 GMT
Date Tue, 09 Oct 2012 21:06:01 GMT
Content-Type text/xml; charset=windows-1252
Connection close

Der folgende Code zeigt das HTTP-Paket, das an den Webserver gesendet wird:



POST /EchoService HTTP/1.0
ASA-Id: 46758096650a44088c77237cc8719d5c
User-Agent: SQLAnywhere/16.0.1234
Accept-Charset: windows-1252, UTF-8, *
Date: Tue, 09 Oct 2012 21:06:01 GMT
Host: localhost:8082
Connection: close
Content-Type: text/xml; charset=windows-1252
Content-Length: 26

<hello>this is xml</hello>

Der folgende Code zeigt die Antwort vom Webserver:

HTTP/1.1 200 OK
Date: Tue, 09 Oct 2012 21:06:01 GMT
Connection: close
Expires: Tue, 09 Oct 2012 21:06:01 GMT
Content-Type: text/xml; charset=windows-1252
Server: SQLAnywhere/16.0.1234

<hello>this is xml</hello>

 Siehe auch