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.
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.
Führen Sie zum Erstellen einer SQL Anywhere-Datenbank den folgenden Befehl aus:
dbinit ftc_client |
Starten Sie den Personal Datenbankserver mit folgendem Befehl:
dbsrv12 ftc_client.db |
Stellen Sie in Interactive SQL mit dem folgenden Befehl eine Verbindung zur Datenbank her:
dbisql -c "UID=DBA;PWD=sql;SERVER=ftc_client" |
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.
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> |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |