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

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - Programmierung » HTTP-Webdienste » Beispiele für HTTP-Webdienste » Praktische Einführung: Verwenden von SQL Anywhere für den Zugriff auf einen SOAP/DISH-Dienst

 

Lektion 2: Einrichten einer Webclient-Datenbank zum Senden von SOAP-Anforderungen und Empfangen von SOAP-Antworten

In dieser Lektion richten Sie einen Webclient ein, der SOAP-Anforderungen sendet und SOAP-Antworten empfängt. Es wird davon ausgegangen, dass Sie eine Webserver-Datenbank entsprechend der Anweisungen in der vorherigen Lektion eingerichtet haben. Weitere Hinweise zum in dieser Lektion beschriebenen Einrichten eines Datenbankservers für den Empfang der SOAP-Anforderungen vom Client finden Sie unter Lektion 1: Einrichten einer Webserver-Datenbank für den Empfang von SOAP-Anforderungen und das Senden von SOAP-Antworten.

Hinweis

Diese Lektion enthält mehrere Referenzen auf localhost. Verwenden Sie die IP-Adresse der Serverdatenbank aus Lektion 1 an Stelle von localhost, wenn der Webclient nicht auf demselben Computer wie die Serverdatenbank ausgeführt wird.

 ♦  So richten Sie einen Datenbankclient für das Senden von SOAP-Anforderungen und den Empfang von SOAP-Antworten ein
  1. Führen Sie zum Erstellen einer SQL Anywhere-Datenbank den folgenden Befehl aus:

    dbinit ftc_client
  2. Starten Sie den Personal Datenbankserver mit folgendem Befehl:

    dbsrv12 ftc_client.db
  3. Stellen Sie in Interactive SQL mit dem folgenden Befehl eine Verbindung zur Datenbank her:

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

    Führen Sie in Interactive SQL das folgende SQL-Skript aus:



    CREATE SERVICE soap_endpoint 
        TYPE 'DISH'
        AUTHORIZATION OFF
        SECURE OFF
        USER DBA;
    
    CREATE PROCEDURE FtoC( temperature FLOAT )
        URL 'http://localhost:8082/soap_endpoint'
        SET 'SOAP(OP=FtoCService)'
        TYPE 'SOAP:DOC';

    Die Zeichenfolge http://localhost:8082/soap_endpoint in der URL-Klausel gibt an, dass der Datenbankserver auf localhost ausgeführt wird und Port 8082 überwacht. Der gewünschte DISH-Webdienst hat den Namen soap_endpoint und dient als SOAP-Endpunkt.

  5. Erstellen Sie eine Wrapper-Prozedur, die einen SOAP-Header erstellt, diesen an die Prozedur FtoC übergibt und Serverantworten verarbeitet.

    Führen Sie in Interactive SQL das folgende SQL-Skript aus:



    CREATE PROCEDURE FahrenheitToCelsius( temperature FLOAT )
    BEGIN
      DECLARE io_header LONG VARCHAR;
      DECLARE in_header LONG VARCHAR;
      DECLARE result LONG VARCHAR;
      DECLARE err INTEGER;
      DECLARE crsr CURSOR FOR
        CALL FtoC( temperature, io_header, in_header );
      SET io_header =
        '<Authentication xmlns="SecretAgent" ' ||
        'mustUnderstand="1">' ||
        '<userName alias="99">' ||
        '<first>Susan</first><last>Hilton</last>' ||
        '</userName>' ||
        '</Authentication>';
      SET in_header =
        '<Session xmlns="SomeSession">' ||
        '123456789' ||
        '</Session>';
    
      MESSAGE 'send, soapheader=' || io_header || in_header;
      OPEN crsr;
      FETCH crsr INTO result, err;
      CLOSE crsr;
      MESSAGE 'receive, soapheader=' || io_header;
      SELECT temperature, Celsius
          FROM OPENXML(result, '//tns:answer', 1, result)
          WITH ("Celsius" FLOAT 'text()');
    END;

    Die erste SET-Anweisung legt folgende XML-Repräsentation eines SOAP-Headers fest, um dem Webserver die Anmeldeinformationen des Benutzers mitzuteilen:

    <Authentication xmlns="SecretAgent" mustUnderstand="1">
        <userName alias="99">
          <first>Susan</first>
          <last>Hilton</last>
        </userName></Authentication>

    Die zweite SET-Anweisung legt folgende XML-Repräsentation eines SOAP-Headers fest, um die Clientsitzungs-ID zu verfolgen:

    <Session xmlns="SomeSession">123456789</Session>

    Die OPEN-Anweisung übergibt die folgende XML-Repräsentation einer SOAP-Anforderung an die Webdienstprozedur:

    <Authentication xmlns="SecretAgent" alias="99" 
        mustUnderstand="1">
        <first>Susan</first>
        <last>Hilton</last>
    </Authentication>
 Siehe auch