Class UrlEncodedParser

  • All Implemented Interfaces:
    ObjectParser

    public class UrlEncodedParser
    extends Object
    implements ObjectParser
    Implements support for HTTP form content encoding parsing of type application/x-www-form-urlencoded as specified in the HTML 4.0 Specification.

    Implementation is thread-safe.

    The data is parsed using parse(String, Object).

    Sample usage:

       static void setParser(HttpTransport transport) {
         transport.addParser(new UrlEncodedParser());
       }
     
    Since:
    1.0
    Author:
    Yaniv Inbar
    • Field Detail

      • CONTENT_TYPE

        public static final String CONTENT_TYPE
        "application/x-www-form-urlencoded" content type.
        See Also:
        Constant Field Values
      • MEDIA_TYPE

        public static final String MEDIA_TYPE
        "application/x-www-form-urlencoded" media type with UTF-8 encoding.
        Since:
        1.13
    • Constructor Detail

      • UrlEncodedParser

        public UrlEncodedParser()
    • Method Detail

      • parse

        public static void parse​(String content,
                                 Object data)
        Parses the given URL-encoded content into the given data object of data key name/value pairs using parse(Reader, Object).
        Parameters:
        content - URL-encoded content or null to ignore content
        data - data key name/value pairs
      • parse

        public static void parse​(Reader reader,
                                 Object data)
                          throws IOException
        Parses the given URL-encoded content into the given data object of data key name/value pairs, including support for repeating data key names.

        Declared fields of a "primitive" type (as defined by Data.isPrimitive(Type) are parsed using Data.parsePrimitiveValue(Type, String) where the Class parameter is the declared field class. Declared fields of type Collection are used to support repeating data key names, so each member of the collection is an additional data key value. They are parsed the same as "primitive" fields, except that the generic type parameter of the collection is used as the Class parameter.

        If there is no declared field for an input parameter name, it will be ignored unless the input data parameter is a Map. If it is a map, the parameter value will be stored either as a string, or as a ArrayList<String> in the case of repeated parameters.

        Parameters:
        reader - URL-encoded reader
        data - data key name/value pairs
        Throws:
        IOException
        Since:
        1.14
      • parseAndClose

        public <T> T parseAndClose​(InputStream in,
                                   Charset charset,
                                   Class<T> dataClass)
                            throws IOException
        Description copied from interface: ObjectParser
        Parses the given input stream into a new instance of the the given data class of key/value pairs and closes the input stream.
        Specified by:
        parseAndClose in interface ObjectParser
        Parameters:
        in - input stream which contains the data to parse
        charset - charset which should be used to decode the input stream or null if unknown
        dataClass - class into which the data is parsed
        Throws:
        IOException
      • parseAndClose

        public Object parseAndClose​(InputStream in,
                                    Charset charset,
                                    Type dataType)
                             throws IOException
        Description copied from interface: ObjectParser
        Parses the given input stream into a new instance of the the given data type of key/value pairs and closes the input stream.
        Specified by:
        parseAndClose in interface ObjectParser
        Parameters:
        in - input stream which contains the data to parse
        charset - charset which should be used to decode the input stream or null if unknown
        dataType - type into which the data is parsed
        Throws:
        IOException
      • parseAndClose

        public <T> T parseAndClose​(Reader reader,
                                   Class<T> dataClass)
                            throws IOException
        Description copied from interface: ObjectParser
        Parses the given reader into a new instance of the the given data class of key/value pairs and closes the reader.
        Specified by:
        parseAndClose in interface ObjectParser
        Parameters:
        reader - reader which contains the text data to parse
        dataClass - class into which the data is parsed
        Throws:
        IOException
      • parseAndClose

        public Object parseAndClose​(Reader reader,
                                    Type dataType)
                             throws IOException
        Description copied from interface: ObjectParser
        Parses the given reader into a new instance of the the given data type of key/value pairs and closes the reader.
        Specified by:
        parseAndClose in interface ObjectParser
        Parameters:
        reader - reader which contains the text data to parse
        dataType - type into which the data is parsed
        Throws:
        IOException