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.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |