Class UrlEncoded

All Implemented Interfaces:
Serializable, Cloneable, Map<String,List<String>>

public class UrlEncoded extends MultiMap<String> implements Cloneable
Handles coding of MIME "x-www-form-urlencoded".

This class handles the encoding and decoding for either the query string of a URL or the _content of a POST HTTP request.

Notes

The UTF-8 charset is assumed, unless otherwise defined by either passing a parameter or setting the "org.eclipse.jetty.util.UrlEncoding.charset" System property.

The hashtable either contains String single values, vectors of String or arrays of Strings.

This class is only partially synchronised. In particular, simple get operations are not protected from concurrent updates.

See Also:
  • Field Details

    • LOG

      static final Logger LOG
    • ENCODING

      public static final Charset ENCODING
  • Constructor Details

    • UrlEncoded

      public UrlEncoded(UrlEncoded url)
    • UrlEncoded

      public UrlEncoded()
    • UrlEncoded

      public UrlEncoded(String query)
  • Method Details

    • decode

      public void decode(String query)
    • decode

      public void decode(String query, Charset charset)
    • encode

      public String encode()
      Encode MultiMap with % encoding for UTF8 sequences.
      Returns:
      the MultiMap as a string with % encoding
    • encode

      public String encode(Charset charset)
      Encode MultiMap with % encoding for arbitrary Charset sequences.
      Parameters:
      charset - the charset to use for encoding
      Returns:
      the MultiMap as a string encoded with % encodings
    • encode

      public String encode(Charset charset, boolean equalsForNullValue)
      Encode MultiMap with % encoding.
      Parameters:
      charset - the charset to encode with
      equalsForNullValue - if True, then an '=' is always used, even for parameters without a value. e.g. "blah?a=&b=&c=".
      Returns:
      the MultiMap as a string encoded with % encodings
    • encode

      public static String encode(MultiMap<String> map, Charset charset, boolean equalsForNullValue)
      Encode MultiMap with % encoding.
      Parameters:
      map - the map to encode
      charset - the charset to use for encoding (uses default encoding if null)
      equalsForNullValue - if True, then an '=' is always used, even for parameters without a value. e.g. "blah?a=&b=&c=".
      Returns:
      the MultiMap as a string encoded with % encodings.
    • decodeTo

      public static void decodeTo(String content, MultiMap<String> map, String charset)
      Decoded parameters to Map.
      Parameters:
      content - the string containing the encoded parameters
      map - the MultiMap to put parsed query parameters into
      charset - the charset to use for decoding
    • decodeTo

      public static void decodeTo(String content, MultiMap<String> map, Charset charset)
      Decoded parameters to Map.
      Parameters:
      content - the string containing the encoded parameters
      map - the MultiMap to put parsed query parameters into
      charset - the charset to use for decoding
    • decodeUtf8To

      public static void decodeUtf8To(String query, MultiMap<String> map)
    • decodeUtf8To

      public static void decodeUtf8To(String query, int offset, int length, MultiMap<String> map)
      Decoded parameters to Map.
      Parameters:
      query - the string containing the encoded parameters
      offset - the offset within raw to decode from
      length - the length of the section to decode
      map - the MultiMap to populate
    • decode88591To

      public static void decode88591To(InputStream in, MultiMap<String> map, int maxLength, int maxKeys) throws IOException
      Decoded parameters to MultiMap, using ISO8859-1 encodings.
      Parameters:
      in - InputSteam to read
      map - MultiMap to add parameters to
      maxLength - maximum length of form to read or -1 for no limit
      maxKeys - maximum number of keys to read or -1 for no limit
      Throws:
      IOException - if unable to decode the InputStream as ISO8859-1
    • decodeUtf8To

      public static void decodeUtf8To(InputStream in, MultiMap<String> map, int maxLength, int maxKeys) throws IOException
      Decoded parameters to Map.
      Parameters:
      in - InputSteam to read
      map - MultiMap to add parameters to
      maxLength - maximum form length to decode or -1 for no limit
      maxKeys - the maximum number of keys to read or -1 for no limit
      Throws:
      IOException - if unable to decode the input stream
    • decodeUtf16To

      public static void decodeUtf16To(InputStream in, MultiMap<String> map, int maxLength, int maxKeys) throws IOException
      Throws:
      IOException
    • decodeTo

      public static void decodeTo(InputStream in, MultiMap<String> map, String charset, int maxLength, int maxKeys) throws IOException
      Decoded parameters to Map.
      Parameters:
      in - the stream containing the encoded parameters
      map - the MultiMap to decode into
      charset - the charset to use for decoding
      maxLength - the maximum length of the form to decode or -1 for no limit
      maxKeys - the maximum number of keys to decode or -1 for no limit
      Throws:
      IOException - if unable to decode the input stream
    • decodeTo

      public static void decodeTo(InputStream in, MultiMap<String> map, Charset charset, int maxLength, int maxKeys) throws IOException
      Decoded parameters to Map.
      Parameters:
      in - the stream containing the encoded parameters
      map - the MultiMap to decode into
      charset - the charset to use for decoding
      maxLength - the maximum length of the form to decode
      maxKeys - the maximum number of keys to decode
      Throws:
      IOException - if unable to decode input stream
    • checkMaxKeys

      private static void checkMaxKeys(MultiMap<String> map, int maxKeys)
    • checkMaxLength

      private static void checkMaxLength(int length, int maxLength)
    • decodeString

      public static String decodeString(String encoded)
      Decode String with % encoding. This method makes the assumption that the majority of calls will need no decoding.
      Parameters:
      encoded - the encoded string to decode
      Returns:
      the decoded string
    • decodeString

      public static String decodeString(String encoded, int offset, int length, Charset charset)
      Decode String with % encoding. This method makes the assumption that the majority of calls will need no decoding.
      Parameters:
      encoded - the encoded string to decode
      offset - the offset in the encoded string to decode from
      length - the length of characters in the encoded string to decode
      charset - the charset to use for decoding
      Returns:
      the decoded string
    • decodeHexChar

      private static char decodeHexChar(int hi, int lo)
    • decodeHexByte

      private static byte decodeHexByte(char hi, char lo)
    • encodeString

      public static String encodeString(String string)
      Perform URL encoding.
      Parameters:
      string - the string to encode
      Returns:
      encoded string.
    • encodeString

      public static String encodeString(String string, Charset charset)
      Perform URL encoding.
      Parameters:
      string - the string to encode
      charset - the charset to use for encoding
      Returns:
      encoded string.
    • clone

      public Object clone()
      Overrides:
      clone in class HashMap<String,List<String>>