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 » SQL Anywhere als HTTP-Webserver verwenden » Webdienstanwendungen auf einem HTTP-Webserver entwickeln

 

Auf vom Client bereitgestellte SOAP-Anforderungsheader zugreifen

Mit einer Kombination der Funktionen NEXT_SOAP_HEADER und SOAP_HEADER können Sie Header in SOAP-Anforderungen erhalten. Die Funktion NEXT_SOAP_HEADER durchläuft die SOAP-Header, die in einem SOAP-Anforderungsrahmen enthalten sind, und gibt den nächsten SOAP-Headernamen zurück. Sie mit NULL aufzurufen führt dazu, dass sie den Namen des ersten Headers zurückgibt. Nachfolgende Header werden abgerufen, indem der Funktion NEXT_SOAP_HEADER der Name des vorigen Headers übergeben wird. Diese Funktion gibt NULL zurück, wenn sie mit dem Namen des letzten Headers aufgerufen wird.

Das folgende Beispiel zeigt, wie der SOAP-Header abgerufen wird:

SET hd_key = NEXT_SOAP_HEADER( hd_key );
    IF hd_key IS NULL THEN
      -- no more header entries
      LEAVE header_loop;
    END IF;

Wenn diese Funktion mehrfach aufgerufen wird, werden alle Headerbereiche genau einmal zurückgegeben, jedoch nicht unbedingt in der Reihenfolge, in der sie in der SOAP-Anforderung angeordnet sind.

Die Funktion SOAP_HEADER gibt den Wert des angegebenen SOAP-Header-Felds zurück oder NULL, wenn sie nicht von einem SOAP-Dienst aufgerufen wurde. Sie wird verwendet, wenn eine SOAP-Anforderung über einen Webdienst verarbeitet wird. Wenn ein Header für einen angegebenen Feldnamen nicht existiert, ist der Rückgabewert NULL.

Das Beispiel sucht nach einem SOAP-Header namens "Authentication". Wenn dieser Header gefunden wird, werden der Wert für den gesamten SOAP-Header sowie die Werte der Attribute @namespace und mustUnderstand extrahiert. Der Wert des SOAP-Headers könnte z.B. wie die folgende XML-Zeichenfolge aussehen:

<Authentication xmlns="CustomerOrderURN" mustUnderstand="1">
  <userName pwd="none">
    <first>John</first>
    <last>Smith</last>
  </userName>
</Authentication>

Für diesen Header hat das Attribut @namespace den Wert CustomerOrderURN.

Das Attribut mustUnderstand hat in diesem Beispiel den Wert 1.

Diese XML-Zeichenfolge wird mit der Funktion OPENXML syntaktisch analysiert. Hierzu wird eine XPath-Zeichenfolge mit dem Wert /*:Authentication/*:userName verwendet.

SELECT * FROM OPENXML( hd_entry, xpath )
    WITH ( pwd LONG VARCHAR '@*:pwd',
        first_name LONG VARCHAR '*:first/text()',
        last_name LONG VARCHAR '*:last/text()' );

Unter Verwendung des oben dargestellten SOAP-Headerwerts erstellt die SELECT-Anweisung wie folgt eine Ergebnismenge:

pwd first_name last_name
none John Smith

Für diese Ergebnismenge wird ein Cursor deklariert und die drei Spaltenwerte werden in drei Variablen abgerufen. Sie haben nun alle gewünschten Informationen, die an den Webdienst übergeben wurden.

 Beispiel