SOAP 要求のヘッダーは、NEXT_SOAP_HEADER 関数と SOAP_HEADER 関数を組み合わせて使用することによって取得できます。NEXT_SOAP_HEADER 関数は、SOAP 要求エンベロープに含まれる SOAP ヘッダーに対して反復され、次の SOAP ヘッダー名を返します。NULL を指定して呼び出すと、最初のヘッダーの名前が返されます。後続のヘッダーは、NEXT_SOAP_HEADER 関数に前のヘッダーの名前を渡すことによって取得されます。最後のヘッダーの名前を指定して呼び出すと、NULL が返されます。
次の例は、SOAP ヘッダーの取得を示しています。
SET hd_key = NEXT_SOAP_HEADER( hd_key ); IF hd_key IS NULL THEN -- no more header entries LEAVE header_loop; END IF; |
この関数を繰り返し呼び出すと、すべてのヘッダーフィールドが一度だけ返されます。ただし、必ずしも SOAP 要求での表示順に表示されるとはかぎりません。
SOAP_HEADER 関数は、名前付きの SOAP ヘッダーフィールドの値を返します。SOAP サービスから呼び出されていない場合は NULL を返します。Web サービスを介して SOAP 要求を処理する場合に使用します。指定したフィールド名のヘッダーが存在しない場合、戻り値は NULL です。
この例は、Authentication という SOAP ヘッダーを探します。このヘッダーが見つかると、SOAP ヘッダー全体の値を抽出し、さらに @namespace 属性と mustUnderstand 属性の値を抽出します。SOAP ヘッダーの値は、次の XML 文字列のようになります。
<Authentication xmlns="CustomerOrderURN" mustUnderstand="1"> <userName pwd="none"> <first>John</first> <last>Smith</last> </userName> </Authentication> |
このヘッダーの場合、@namespace 属性値は CustomerOrderURN になります。
また、mustUnderstand 属性値は 1 になります。
この XML 文字列の内部構造を、XPath 文字列に /*:Authentication/*:userName を設定した OPENXML 関数を使用して解析します。
SELECT * FROM OPENXML( hd_entry, xpath ) WITH ( pwd LONG VARCHAR '@*:pwd', first_name LONG VARCHAR '*:first/text()', last_name LONG VARCHAR '*:last/text()' ); |
上記のサンプル SOAP ヘッダー値を使用した場合、SELECT 文は次のような結果セットを作成します。
pwd | first_name | last_name |
none | John | Smith |
この結果セットに対してカーソルが宣言され、3 つのカラム値が 3 つの変数にフェッチされます。この時点で、Web サービスに渡された関連性のある情報すべてが手中にあります。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |