Die Funktionen HTTP_VARIABLE, NEXT_HTTP_VARIABLE, HTTP_HEADER und NEXT_HTTP_HEADER können für Iterationen durch die vom Client bereitgestellten Variablen und Header verwendet werden.
Sie können mit den Funktionen NEXT_HTTP_VARIABLE und HTTP_VARIABLE Iterationen durch alle vom Client bereitgestellten Variablen durchführen.
Mit der Funktion HTTP_VARIABLE können Sie den Wert einer Variablen abrufen.
Die Funktion NEXT_HTTP_VARIABLE ermöglicht Ihnen die Iteration durch alle vom Client gesendeten Variablen. Übergeben Sie den Wert NULL beim ersten Aufruf der Funktion, um den ersten Variablennamen abzurufen. Verwenden Sie den zurückgegeben Variablenname als Parameter für einen Aufruf der Funktion HTTP_VARIABLE, um ihren Wert abzurufen. Durch die Übergabe des vorigen Variablennamens an den Aufruf von NEXT_HTTP_VARIABLE wird der nächste Variablennamen abgerufen. NULL wird zurückgegeben, wenn der letzte Variablenname übergeben wird.
Iterationen durch die Variablennamen stellen sicher, dass jeder Variablenname genau einmal zurückgegeben wird. Die Reihenfolge der Variablennamen ist jedoch möglicherweise nicht dieselbe wie die Reihenfolge, in der sie in der Clientanforderung auftreten.
Das folgende Beispiel zeigt die Verwendung der Funktion HTTP_VARIABLE zum Abrufen von Werten aus Parametern, die in einer auf den ShowDetail-Dienst zugreifenden Clientanforderung bereitgestellt werden:
CREATE SERVICE ShowDetail TYPE 'HTML' URL PATH OFF AUTHORIZATION OFF USER DBA AS CALL ShowDetail(); CREATE PROCEDURE ShowDetail() BEGIN DECLARE v_customer_id LONG VARCHAR; DECLARE v_product_id LONG VARCHAR; SET v_customer_id = HTTP_VARIABLE( 'customer_id' ); SET v_product_id = HTTP_VARIABLE( 'product_id' ); CALL ShowSalesOrderDetail( v_customer_id, v_product_id ); END; |
Das folgende Beispiel zeigt das Abrufen dreier Attribute aus Headerfeldwerten in Zusammenhang mit der image Variable:
SET v_name = HTTP_VARIABLE( 'image', NULL, 'Content-Disposition' ); SET v_type = HTTP_VARIABLE( 'image', NULL, 'Content-Type' ); SET v_image = HTTP_VARIABLE( 'image', NULL, '@BINARY' ); |
Die Übergabe einer Ganzzahl als zweiten Parameter ermöglicht Ihnen den Abruf zusätzlicher Werte. Mit dem dritten Parameter können Sie die Werte des Headerfeldes aus mehrteiligen Anforderungen abrufen. Geben Sie den Namen eines Headerfeldes ein, um seinen Wert abzurufen.
HTTP-Anforderungsheader können unter Verwendung der Funktionen NEXT_HTTP_HEADER und HTTP_HEADER von Anforderungen bezogen werden.
Die Funktion HTTP_HEADER gibt den Wert des angegebenen HTTP-Headerfelds zurück.
Die Funktion NEXT_HTTP_HEADER führt eine Iteration durch die HTTP-Header durch und gibt den nächsten HTTP-Headernamen zurück. Wird diese Funktion mit NULL aufgerufen, gibt sie den Namen des ersten Headers zurück. Nachfolgende Header werden abgerufen, indem der Funktion der Name des vorigen Headers übergeben wird. NULL wird zurückgegeben, wenn der letzte Headernamen aufgerufen wird.
Die folgende Tabelle enthält eine Liste der gängigen HTTP-Anforderungsheader und ihrer gängigen Werte:
Headername | Headerwert |
---|---|
Accept | image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* |
Accept-Language | en-us |
Accept-Charset | utf-8, iso-8859-5;q=0.8 |
Accept-Encoding | gzip, deflate |
User-Agent | Mozilla/4.0 (kompatibel; MSIE 7.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727) |
Host | localhost:8080 |
Connection | Keep-Alive |
Die folgende Tabelle enthält eine Liste der Spezial-Header und ihrer gängigen Werte:
Headername | Headerwert |
---|---|
@HttpMethod | GET |
@HttpURI | /demo/ShowHTTPHeaders |
@HttpVersion | HTTP/1.1 |
@HttpQueryString | id=-123&version=109&lang=en |
Sie können mit dem Spezial-Header @HttpStatus den Statuscode der gerade verarbeiteten Anforderung einstellen.
Das folgende Beispiel zeigt das Formatieren von Headernamen und -werten als HTML-Tabelle.
Den Webdienst ShowHTTPHeaders erstellen:
CREATE SERVICE ShowHTTPHeaders TYPE 'RAW' AUTHORIZATION OFF USER DBA AS CALL HTTPHeaderExample(); |
Erstellen Sie eine HTTPHeaderExample-Prozedur, die mithilfe der Funktion NEXT_HTTP_HEADER den Namen des Headers abruft, und verwenden Sie anschließend die Funktion HTTP_HEADER, um dessen Wert abzurufen:
CREATE PROCEDURE HTTPHeaderExample() RESULT ( html_string LONG VARCHAR ) BEGIN declare header_name LONG VARCHAR; declare header_value LONG VARCHAR; declare header_query LONG VARCHAR; declare table_rows XML; set header_name = NULL; set table_rows = NULL; header_loop: LOOP SET header_name = NEXT_HTTP_HEADER( header_name ); IF header_name IS NULL THEN LEAVE header_loop END IF; SET header_value = HTTP_HEADER( header_name ); SET header_query = HTTP_HEADER( '@HttpQueryString' ); -- Format header name and value into an HTML table row SET table_rows = table_rows || XMLELEMENT( name "tr", XMLATTRIBUTES( 'left' AS "align", 'top' AS "valign" ), XMLELEMENT( name "td", header_name ), XMLELEMENT( name "td", header_value ), XMLELEMENT( name "td", header_query ) ); END LOOP; SELECT XMLELEMENT( name "table", XMLATTRIBUTES( '' AS "BORDER", '10' AS "CELLPADDING", '0' AS "CELLSPACING" ), XMLELEMENT( name "th", XMLATTRIBUTES( 'left' AS "align", 'top' AS "valign" ), 'Header Name' ), XMLELEMENT( name "th", XMLATTRIBUTES( 'left' AS "align", 'top' AS "valign" ), 'Header Value' ), XMLELEMENT( name "th", XMLATTRIBUTES( 'left' AS "align", 'top' AS "valign" ), 'HTTP Query String' ), table_rows ); END; |
Greifen Sie in einem Webbrowser auf ShowHTTPHeaders zu und lassen Sie sich die Anforderungsheader in einer HTML-Tabelle angeordnet anzeigen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |