getServerVariable

getServerVariable(var: String): String;

The getServerVariable method of the JadeWebServiceProvider class returns the specified HTTP header information for your Web service request from the Internet Information Server (IIS).

As the var parameter is IIS-dependent and is therefore subject to change, refer to the ServerVariables function in your Internet Information Services (IIS) documentation for details.

The code fragment in the following example returns the IP address of the current Web service as determined by IIS.

JadeWebServiceProvider.getServerVariable('REMOTE_ADDR');

Common server environment variables, documented in the IIS documentation under the ServerVariables function, include those listed in the following table.

Variable Returns…
HTTP_ACCEPT_LANGUAGE A string describing the language to use for displaying content
HTTP_USER_AGENT A string describing the browser that sent the request
HTTPS ON if the request came in through a secure channel (SSL) or it returns OFF if the request is for a non-secure channel
REMOTE_ADDR IP address of the remote host making the request
SERVER_NAME Host name, DNS alias, or IP address of the server as it would appear in self-referencing URLs
SERVER_PORT Port number to which the request was sent
URL Base portion of the URL

An exception is raised if this method is invoked from a server method.

The Web service provider requires the name of the method to invoke. In order to obtain this, the getServerVariable method is called. When the name that is retrieved is longer than 100 characters, the name is truncated to 100 characters. In addition, if the first character of the name is uppercase, it is changed to lowercase.

This name is used to determine the method to invoke when using non-wrapped document literal format messages. When the name does not meet the JADE method-naming requirements, the method invocation is likely to fail and a SOAP fault will be returned to the Web service consumer.

You can implement your own getServerVariable method (equivalent to this method in the JadeWebServiceProvider class) if you are using a JadeInternetTCPIPConnection instance to communicate with the jadehttp library (that is, jadehttp.dll) when your application does not use WebSession functionality.

The following method returns the value of the Internet Server Application Programming Interface (ISAPI) variable (specified by the var parameter) associated with an Internet message that is received.

getServerVariable(var: String): String;
// The request for the ISAPI variable var is built in the bin variable
// The JadeInternetTCPIPConnection instance must exist and be connected
constants
    NULL:       Character = #00.Character;
vars
    bin:        Binary;
    connection: JadeInternetTCPIPConnection;
begin
    if connection <> null and connection.state = Connection.Connected then
       if IsUnicodeSystem then
          bin := ("GSV" & NULL & var.trimBlanks() & NULL).asANSI(0);
        else
          bin := ("GSV" & NULL & var.trimBlanks() & NULL).Binary;
       endif;
       connection.writeBinary(bin); bin := connection.readBinary(0); endif; if IsUnicodeSystem then return bin.ansiToUnicode.trimBlanks; else return bin.String.trimBlanks; endif; end;

You can call this method only during the processing of a received Internet message and before the reply is sent. Accessing the method at any other time causes the process to wait indefinitely for the connection read or causes the message exchange process with the jadehttp library to be out of step.