Package wt.httpgw

Class HTTPRequest

java.lang.Object
wt.httpgw.HTTPRequest
All Implemented Interfaces:
Serializable, CGIConstants
Direct Known Subclasses:
HTTPRequestImpl

public abstract class HTTPRequest extends Object implements CGIConstants, Serializable
This class is a carrier of HTTP request information to a Windchill method server. It uses customized serialization code to stream request bodies to the server. Instances contain information about the request (I.e. CGI environment values) and an input stream reference.

Client-side Serialization The client (HTTP gateway) constructs request objects to carry request information to a method server. The client stores the available HTTP request information in the object and sets the input stream reference to the actual HTTP request's input stream provided by the Web server.

Serialization of the object sends the request information followed by the content of the input stream. The content is forwarded by reading blocks of data from the input stream and writing them to the marshal stream until the entire body has been sent. The length of the body is determined from the content-length HTTP header. If no content-length is specified, it reads until EOF on the input stream.

Server-side Deserialization The server (Windchill method server) receives the request object as an argument to an RMI call. It is deserialized before the target method is invoked. The deserialization code stores a reference to the RMI marshal stream in the object and directly dispatches the target method (HTTPServer.processRequest) prematurely. The body of the request is then available as an input stream to the dispatched method. The RMI marshal stream is simply being used as a pipe to connect the input stream provided to the HTTP gateway by the Web server to an input stream in the Windchill method server.

Supported API: true
Extendable: false

See Also:
  • Method Details

    • getFormData

      public Properties getFormData()
      Retrieves the FORM data from the incoming input stream as x-www-form-urlencoded data. If the input stream is null, it will read FORM data from the header query string. All hex escaped characters are decoded, then the sequence of 8-bit values is converted to characters using the character encoding returned by getEncoding.

      Supported API: true
      Returns:
      the form data as name value pairs
    • setFormData

      public abstract void setFormData(Properties p)
      Sets the FORM data from a saved session.

      Supported API: true
      Parameters:
      p - the form data
    • getFormDataMultivalue

      public Hashtable getFormDataMultivalue()
      Retrieves the FORM data from the incoming input stream as x-www-form-urlencoded data. If the input stream is null, it will read FORM data from the header query string. All hex escaped characters are decoded, then the sequence of 8-bit values is converted to characters using the character encoding returned by getEncoding. Multivalue fields are stored in a Vector which can be iterated for the individual values.

      Supported API: true
      Returns:
      Properties the form data as name value pairs.
    • getFormDataMultivalue

      public abstract Hashtable getFormDataMultivalue(String encoding)
      Retrieves the FORM data from the incoming input stream as x-www-form-urlencoded data. If the input stream is null, it will read FORM data from the header query string. All hex escaped characters are decoded, then the sequence of 8-bit values is converted to characters using the given character encoding. Multivalue fields are stored in a Vector which can be iterated for the individual values.

      Supported API: true
      Parameters:
      encoding - the encoding to use
      Returns:
      the form data as name value pairs.
    • getQueryString

      public abstract String getQueryString()
      Gets the URLs query string in decoded format. All hex escaped characters are decoded. The sequence of 8-bit values is then converted to characters using UTF8 encoding.

      Supported API: true
      Returns:
      the decoded query string.
    • getQueryString

      public abstract String getQueryString(String encoding)
      Gets the URLs query string in decoded format. All hex escaped characters are decoded. The sequence of 8-bit values is then converted to characters using the given character encoding.

      Supported API: true
      Parameters:
      encoding - the encoding to use
      Returns:
      the decoded query string.
    • splitQueryString

      public abstract Properties splitQueryString()
      Splits the URLs query string into name value pairs based on the ampersand and equal character tokens. The returned properties are URL decoded and then converted to characters using UTF8 encoding.

      Supported API: true
      Returns:
      the query string info as name value pairs.
    • splitQueryStringMultivalue

      public abstract Hashtable splitQueryStringMultivalue()
      Splits the URLs query string into name value pairs based on the ampersand and equal character tokens. The returned properties are URL decoded and then converted to characters using UTF8 encoding.

      Supported API: true
      Returns:
      the query string info as name value pairs.
    • splitQueryString

      public static Properties splitQueryString(String query_string)
      Splits the given query string into name value pairs based on the ampersand and equal character tokens. The string should not yet be URL decoded, since some of the names or values might themselves contain the ampersand and equal characters. The returned properties are URL decoded and then converted to characters using UTF8 encoding.

      Supported API: true
      Parameters:
      query_string - the query string.
      Returns:
      the query string info as name value pairs.
    • splitQueryStringMultivalue

      public static Hashtable splitQueryStringMultivalue(String query_string)
      Splits the given query string into name value pairs based on the ampersand and equal character tokens. The string should not yet be URL decoded, since some of the names or values might themselves contain the ampersand and equal characters. The returned properties are URL decoded and then converted to characters using UTF8 encoding.

      Supported API: true
      Parameters:
      query_string - the query string.
      Returns:
      the query string info as name value pairs.
    • splitQueryString

      public static Properties splitQueryString(String query_string, String encoding)
      Splits the URLs query string into name value pairs based on the ampersand and equal character tokens. The string should not yet be URL decoded, since some of the names or values might themselves contain the ampersand and equal characters. The returned properties are URL decoded and then converted to characters using the given encoding. Non-string values (ie Multivalue parameters are stored in vector) are converted to a toString() format.

      Supported API: true
      Parameters:
      query_string - the query string.
      encoding - the character encoding name
      Returns:
      the query string info as name value pairs.
    • splitQueryStringMultivalue

      public static Hashtable splitQueryStringMultivalue(String query_string, String encoding)
      Splits the URLs query string into name value pairs based on the ampersand and equal character tokens. The string should not yet be URL decoded, since some of the names or values might themselves contain the ampersand and equal characters. The returned properties are URL decoded and then converted to characters using the given encoding. Multivalue parameters are stored in a vector which can be iterated for the individual values.

      Supported API: true
      Parameters:
      query_string - the query string.
      encoding - the character encoding name
      Returns:
      the query string info as name value pairs.
    • isGetRequest

      public abstract boolean isGetRequest()
      Determine if the REQUEST_METHOD used to send the data from the browser was the GET method.

      Supported API: true
      Returns:
      true, if the REQUEST_METHOD was GET. false, otherwise.
    • isPostRequest

      public abstract boolean isPostRequest()
      Determine if the REQUEST_METHOD used to send the data from the browser was the POST method.

      Supported API: true
      Returns:
      true, if the REQUEST_METHOD was POST. false, otherwise.
    • isUrlencodedContent

      public abstract boolean isUrlencodedContent()
      Determine if the CONTENT_TYPE used to send the data from the browser was urlencoded form data.

      Supported API: true
      Returns:
      true, if the CONTENT_TYPE was urlencoded form data. false, otherwise.
    • getBaseURL

      public abstract String getBaseURL()
      Determine the Base URL of this script. (Does not include the QUERY_STRING (if any) or PATH_INFO (if any).

      Supported API: true
      Returns:
      The base URL of this script as a String.
    • getFullURL

      public abstract String getFullURL()
      Determine the Full URL of this script. (Includes the QUERY_STRING (if any) or PATH_INFO (if any).

      Supported API: true
      Returns:
      The full URL of this script as a String.
    • getProperty

      public abstract String getProperty(String key)
      Public getter method for access to CGI data.

      Supported API: true
      Parameters:
      key - the key of interest
      Returns:
      the value
    • getPropertyKeys

      public abstract Enumeration getPropertyKeys()
      Public getter method for access to CGI data keys.

      Supported API: true
      Returns:
      Enumeration of the keys
    • getProperty

      public abstract String getProperty(String key, String default_value)
      Public getter method for access to CGI data. If not set, default value is returned.

      Supported API: true
      Parameters:
      key - the key of interest
      default_value - the default value to return
      Returns:
      the value
    • setProperty

      public abstract void setProperty(String key, String value)
      Public setter method for CGI data.

      Supported API: true
      Parameters:
      key - the key of interest
      value - the value
    • getEncoding

      public String getEncoding()
      Guess user agent's file encoding from request headers. If Accept-Charset is specified, use the first value and apply a mapping of IANA names to Java encoding names. Mapping can be controlled at runtime with properties of the form wt.httpgw.encoding.xxx=yyy where xxx is the lower case IANA encoding name and yyy is the Java encoding name. If no Accept-Charset header is present, use template encoding rules to guess.

      Supported API: true
      Returns:
      the encoding name