## HTTPClient
Class Util

    java.lang.Object
      HTTPClient.Util

public class Util
extends Object

This class holds various utility methods.

Field Summary
`(package private) static char[]` `hex_map`

Method Summary
`static String` `assembleHeader(Vector pheader)` Assembles a Vector of HttpHeaderElements into a full header string.
`(package private) static int[]` `compile_search(byte[] search)` Creates an array of distances to speed up the search in findStr().
`static int` `defaultPort(String protocol)` Deprecated. use URI.defaultPort() instead
`static String` `dequoteString(String str)` Replace quoted characters by their unquoted version.
`(package private) static String` `escapeUnsafeChars(String path)` Escape unsafe characters in a path.
`(package private) static int` `findSpace(char[] str, int pos)` returns the position of the first space character in a char array starting a position pos.
`(package private) static int` `findStr(byte[] search, int[] cmp, byte[] str, int beg, int end)` Search for a string.
`static HttpHeaderElement` `getElement(Vector header, String name)` Get the HttpHeaderElement with the name name.
`static String` `getFragment(String resource)` Extract the fragment part from an http resource.
`(package private) static Hashtable` `getList(Hashtable cntxt_list, Object cntxt)` Helper method for context lists used by modules.
`static String` `getParameter(String param, String hdr)` retrieves the value associated with the parameter param in a given header string.
`static String` `getParams(String resource)` Extract the params part from an http resource.
`static String` `getPath(String resource)` Extract the path from an http resource.
`static String` `getQuery(String resource)` Extract the query string from an http resource.
`static boolean` `hasToken(String header, String token)` Determines if the given header contains a certain token.
`static String` `httpDate(Date date)` This returns a string containing the date and time in date formatted according to a subset of RFC-1123.
`(package private) static boolean` `needsQuoting(String str)` Does the string need to be quoted when sent in a header? I.e.
`static Vector` `parseHeader(String header)` This parses the value part of a header.
`static Vector` `parseHeader(String header, boolean dequote)` This parses the value part of a header.
`(package private) static Date` `parseHttpDate(String dstr)` Parse the http date string.
`static String` `quoteString(String str, String qlist)` Replace given characters by their quoted version.
`(package private) static AuthorizationInfo[]` `resizeArray(AuthorizationInfo[] src, int new_size)`
`(package private) static boolean[]` `resizeArray(boolean[] src, int new_size)`
`(package private) static byte[]` `resizeArray(byte[] src, int new_size)`
`(package private) static char[]` `resizeArray(char[] src, int new_size)`
`(package private) static Cookie[]` `resizeArray(Cookie[] src, int new_size)`
`(package private) static int[]` `resizeArray(int[] src, int new_size)`
`(package private) static NVPair[]` `resizeArray(NVPair[] src, int new_size)`
`(package private) static Object[]` `resizeArray(Object[] src, int new_size)`
`(package private) static String[]` `resizeArray(String[] src, int new_size)`
`static boolean` `sameHttpURL(URL url1, URL url2)` Compares two http urls for equality.
`(package private) static int` `skipSpace(char[] str, int pos)` returns the position of the first non-space character in a char array starting a position pos.
`(package private) static int` `skipToken(char[] str, int pos)` returns the position of the first non-token character in a char array starting a position pos.
`(package private) static String[]` `splitProperty(String prop)` Split a property into an array of Strings, using "|" as the separator.
`static boolean` `wildcardMatch(String pattern, String name)` Match pattern against name, where pattern may contain wildcards ('*').

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### hex_map

    static final char[] hex_map

Method Detail

### resizeArray

    static final Object[] resizeArray(Object[] src,
                                      int new_size)

### resizeArray

    static final NVPair[] resizeArray(NVPair[] src,
                                      int new_size)

### resizeArray

    static final AuthorizationInfo[] resizeArray(AuthorizationInfo[] src,
                                                 int new_size)

### resizeArray

    static final Cookie[] resizeArray(Cookie[] src,
                                      int new_size)

### resizeArray

    static final String[] resizeArray(String[] src,
                                      int new_size)

### resizeArray

    static final boolean[] resizeArray(boolean[] src,
                                       int new_size)

### resizeArray

    static final byte[] resizeArray(byte[] src,
                                    int new_size)

### resizeArray

    static final char[] resizeArray(char[] src,
                                    int new_size)

### resizeArray

    static final int[] resizeArray(int[] src,
                                   int new_size)

### splitProperty

    static String[] splitProperty(String prop)

  Split a property into an array of Strings, using "|" as the separator.

### getList

    static final Hashtable getList(Hashtable cntxt_list,
                                   Object cntxt)

  Helper method for context lists used by modules. Returns the list associated with the context if it exists; otherwise it creates a new list and adds it to the context list.

  Parameters:
    `cntxt_list` - the list of lists indexed by context
    `cntxt` - the context

### compile_search

    static final int[] compile_search(byte[] search)

  Creates an array of distances to speed up the search in findStr(). The returned array should be passed as the second argument to findStr().

  Parameters:
    `search` - the search string (same as the first argument to findStr()).
  Returns:
    an array of distances (to be passed as the second argument to findStr()).

### findStr

    static final int findStr(byte[] search,
                             int[] cmp,
                             byte[] str,
                             int beg,
                             int end)

  Search for a string. Use compile_search() to first generate the second argument. This uses a Knuth-Morris-Pratt like algorithm.

  Parameters:
    `search` - the string to search for.
    `cmp` - the the array returned by compile_search.
    `str` - the string in which to look for search.
    `beg` - the position at which to start the search in str.
    `end` - the position at which to end the search in str, noninclusive.
  Returns:
    the position in str where search was found, or -1 if not found.

### dequoteString

    public static final String dequoteString(String str)

  Replace quoted characters by their unquoted version. Quoted characters are characters preceded by a slash. E.g. "\c" would be replaced by "c". This is used in parsing http headers where quoted-characters are allowed in quoted-strings and often used to quote the quote character <">.

  Parameters:
    `str` - the string do dequote
  Returns:
    the string do with all quoted characters replaced by their true value.

### quoteString

    public static final String quoteString(String str,
                                           String qlist)

  Replace given characters by their quoted version. Quoted characters are characters preceded by a slash. E.g. "c" would be replaced by "\c". This is used in generating http headers where certain characters need to be quoted, such as the quote character <">.

  Parameters:
    `str` - the string do quote
    `qlist` - the list of characters to quote
  Returns:
    the string do with all characters replaced by their quoted version.

### parseHeader

    public static final Vector parseHeader(String header)
                                    throws ParseException

  This parses the value part of a header. All quoted strings are dequoted.

  Parameters:
    `header` - the value part of the header.
  Returns:
    a Vector containing all the elements; each entry is an instance of HttpHeaderElement.
  Throws:
    `ParseException` - if the syntax rules are violated.
  See Also:
    `parseHeader(java.lang.String, boolean)`

### parseHeader

    public static final Vector parseHeader(String header,
                                           boolean dequote)
                                    throws ParseException

  This parses the value part of a header. The result is a Vector of HttpHeaderElement's. The syntax the header must conform to is:

       header  = [ element ] *( "," [ element ] )
       element = name [ "=" [ value ] ] *( ";" [ param ] )
       param   = name [ "=" [ value ] ]

       name    = token
       value   = ( token | quoted-string )

       token         = 1*<any char except "=", ",", ";", <"> and
                             white space>
       quoted-string = <"> *( text | quoted-char ) <">
       text          = any char except <">
       quoted-char   = "\" char

  Any amount of white space is allowed between any part of the header, element or param and is ignored. A missing value in any element or param will be stored as the empty string; if the "=" is also missing null will be stored instead.

  Parameters:
    `header` - the value part of the header.
    `dequote` - if true all quoted strings are dequoted.
  Returns:
    a Vector containing all the elements; each entry is an instance of HttpHeaderElement.
  Throws:
    `ParseException` - if the above syntax rules are violated.
  See Also:
    `HttpHeaderElement`

### hasToken

    public static final boolean hasToken(String header,
                                         String token)
                                  throws ParseException

  Determines if the given header contains a certain token. The header must conform to the rules outlined in parseHeader().

  Parameters:
    `header` - the header value.
    `token` - the token to find; the match is case-insensitive.
  Returns:
    true if the token is present, false otherwise.
  Throws:
    `ParseException` - if this is thrown parseHeader().
  See Also:
    `parseHeader(java.lang.String)`

### getElement

    public static final HttpHeaderElement getElement(Vector header,
                                                     String name)

  Get the HttpHeaderElement with the name name.

  Parameters:
    `header` - a vector of HttpHeaderElement's, such as is returned from `parseHeader()`
    `name` - the name of element to retrieve; matching is case-insensitive
  Returns:
    the request element, or null if none found.
  See Also:
    `parseHeader(java.lang.String)`

### getParameter

    public static final String getParameter(String param,
                                            String hdr)
                                     throws ParseException

  retrieves the value associated with the parameter param in a given header string. It parses the header using `parseHeader()` and then searches the first element for the given parameter. This is used especially in headers like 'Content-type' and 'Content-Disposition'.

  quoted characters ("\x") in a quoted string are dequoted.

  Parameters:
    `param` - the parameter name
    `hdr` - the header value
  Returns:
    the value for this parameter, or null if not found.
  Throws:
    `ParseException` - if the above syntax rules are violated.
  See Also:
    `parseHeader(java.lang.String)`

### assembleHeader

    public static final String assembleHeader(Vector pheader)

  Assembles a Vector of HttpHeaderElements into a full header string. The individual header elements are seperated by a ", ".

  Returns:
    a string containing the assembled header

### skipSpace

    static final int skipSpace(char[] str,
                               int pos)

  returns the position of the first non-space character in a char array starting a position pos.

  Parameters:
    `str` - the char array
    `pos` - the position to start looking
  Returns:
    the position of the first non-space character

### findSpace

    static final int findSpace(char[] str,
                               int pos)

  returns the position of the first space character in a char array starting a position pos.

  Parameters:
    `str` - the char array
    `pos` - the position to start looking
  Returns:
    the position of the first space character, or the length of the string if not found

### skipToken

    static final int skipToken(char[] str,
                               int pos)

  returns the position of the first non-token character in a char array starting a position pos.

  Parameters:
    `str` - the char array
    `pos` - the position to start looking
  Returns:
    the position of the first non-token character, or the length of the string if not found

### needsQuoting

    static final boolean needsQuoting(String str)

  Does the string need to be quoted when sent in a header? I.e. does it contain non-token characters?

  Parameters:
    `str` - the string
  Returns:
    true if it needs quoting (i.e. it contains non-token chars)

### sameHttpURL

    public static final boolean sameHttpURL(URL url1,
                                            URL url2)

  Compares two http urls for equality. This exists because the method `java.net.URL.sameFile()` is broken (an explicit port 80 doesn't compare equal to an implicit port, and it doesn't take escapes into account).

  Two http urls are considered equal if they have the same protocol (case-insensitive match), the same host (case-insensitive), the same port and the same file (after decoding escaped characters).

  Parameters:
    `url1` - the first url
  Returns:
    true if url1 and url2 compare equal

### defaultPort

    public static final int defaultPort(String protocol)

  Deprecated. use URI.defaultPort() instead

  Return the default port used by a given protocol.

  Parameters:
    `protocol` - the protocol
  Returns:
    the port number, or 0 if unknown
  See Also:
    `URI.defaultPort(java.lang.String)`

### parseHttpDate

    static final Date parseHttpDate(String dstr)

  Parse the http date string. java.util.Date will do this fine, but is deprecated, so we use SimpleDateFormat instead.

  Parameters:
    `dstr` - the date string to parse
  Returns:
    the Date object

### httpDate

    public static final String httpDate(Date date)

  This returns a string containing the date and time in date formatted according to a subset of RFC-1123. The format is defined in the HTTP/1.0 spec (RFC-1945), section 3.3, and the HTTP/1.1 spec (RFC-2616), section 3.3.1. Note that Date.toGMTString() is close, but is missing the weekday and supresses the leading zero if the day is less than the 10th. Instead we use the SimpleDateFormat class.

  Some versions of JDK 1.1.x are bugged in that their GMT uses daylight savings time... Therefore we use our own timezone definitions.

  Parameters:
    `date` - the date and time to be converted
  Returns:
    a string containg the date and time as used in http

### escapeUnsafeChars

    static final String escapeUnsafeChars(String path)

  Escape unsafe characters in a path.

  Parameters:
    `path` - the original path
  Returns:
    the path with all unsafe characters escaped

### getPath

    public static final String getPath(String resource)

  Extract the path from an http resource.

  The "resource" part of an HTTP URI can contain a number of parts, some of which are not always of interest. These methods here will extract the various parts, assuming the following syntanx (taken from RFC-2616):

       resource = [ "/" ] [ path ] [ ";" params ] [ "?" query ] [ "#" fragment ]

  Returns:
    the path, including any leading "/"
  See Also:
    `getParams(java.lang.String)`, `getQuery(java.lang.String)`, `getFragment(java.lang.String)`

### getParams

    public static final String getParams(String resource)

  Extract the params part from an http resource.

  Returns:
    the params, or null if there are none
  See Also:
    `getPath(java.lang.String)`

### getQuery

    public static final String getQuery(String resource)

  Extract the query string from an http resource.

  Returns:
    the query, or null if there was none
  See Also:
    `getPath(java.lang.String)`

### getFragment

    public static final String getFragment(String resource)

  Extract the fragment part from an http resource.

  Returns:
    the fragment, or null if there was none
  See Also:
    `getPath(java.lang.String)`

### wildcardMatch

    public static final boolean wildcardMatch(String pattern,
                                              String name)

  Match pattern against name, where pattern may contain wildcards ('*').

  Parameters:
    `pattern` - the pattern to match; may contain '*' which match any number (0 or more) of any character (think file globbing)
    `name` - the name to match against the pattern
  Returns:
    true if the name matches the pattern; false otherwise