Class URLEncodedUtils


  • public class URLEncodedUtils
    extends java.lang.Object
    A collection of utilities for encoding URLs.
    Since:
    4.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String CONTENT_TYPE
      The default HTML form content type.
      private static java.lang.String NAME_VALUE_SEPARATOR  
      private static char PATH_SEPARATOR  
      private static java.util.BitSet PATH_SEPARATORS  
      private static java.util.BitSet PATH_SPECIAL  
      private static java.util.BitSet PATHSAFE
      Characters which are safe to use in a path, i.e.
      private static java.util.BitSet PUNCT
      Punctuation characters: , ; : $ & + =
      private static char QP_SEP_A  
      private static char QP_SEP_S  
      private static int RADIX  
      private static java.util.BitSet RESERVED
      Reserved characters, i.e.
      private static java.util.BitSet UNRESERVED
      Unreserved characters, i.e.
      private static java.util.BitSet URIC
      Characters which are safe to use in a query or a fragment, i.e.
      private static java.util.BitSet URLENCODER
      Safe characters for x-www-form-urlencoded data, as per java.net.URLEncoder and browser behaviour, i.e.
      private static java.util.BitSet USERINFO
      Characters which are safe to use in userinfo, i.e.
    • Constructor Summary

      Constructors 
      Constructor Description
      URLEncodedUtils()  
    • Method Summary

      All Methods Static Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      private static java.util.List<org.apache.http.NameValuePair> createEmptyList()  
      private static java.lang.String decodeFormFields​(java.lang.String content, java.lang.String charset)
      Decode/unescape www-url-form-encoded content.
      private static java.lang.String decodeFormFields​(java.lang.String content, java.nio.charset.Charset charset)
      Decode/unescape www-url-form-encoded content.
      private static java.lang.String encodeFormFields​(java.lang.String content, java.lang.String charset)
      Encode/escape www-url-form-encoded content.
      private static java.lang.String encodeFormFields​(java.lang.String content, java.nio.charset.Charset charset)
      Encode/escape www-url-form-encoded content.
      (package private) static java.lang.String encPath​(java.lang.String content, java.nio.charset.Charset charset)
      Encode a String using the PATH_SPECIAL set of characters.
      (package private) static java.lang.String encUric​(java.lang.String content, java.nio.charset.Charset charset)
      Encode a String using the URIC set of characters.
      (package private) static java.lang.String encUserInfo​(java.lang.String content, java.nio.charset.Charset charset)
      Encode a String using the USERINFO set of characters.
      static java.lang.String format​(java.lang.Iterable<? extends org.apache.http.NameValuePair> parameters, char parameterSeparator, java.nio.charset.Charset charset)
      Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
      static java.lang.String format​(java.lang.Iterable<? extends org.apache.http.NameValuePair> parameters, java.nio.charset.Charset charset)
      Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
      static java.lang.String format​(java.util.List<? extends org.apache.http.NameValuePair> parameters, char parameterSeparator, java.lang.String charset)
      Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
      static java.lang.String format​(java.util.List<? extends org.apache.http.NameValuePair> parameters, java.lang.String charset)
      Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
      static java.lang.String formatSegments​(java.lang.Iterable<java.lang.String> segments, java.nio.charset.Charset charset)
      Returns a string consisting of joint encoded path segments.
      static java.lang.String formatSegments​(java.lang.String... segments)
      Returns a string consisting of joint encoded path segments.
      static boolean isEncoded​(org.apache.http.HttpEntity entity)
      Returns true if the entity's Content-Type header is application/x-www-form-urlencoded.
      static java.util.List<org.apache.http.NameValuePair> parse​(java.lang.String s, java.nio.charset.Charset charset)
      Returns a list of NameValuePairs URI query parameters.
      static java.util.List<org.apache.http.NameValuePair> parse​(java.lang.String s, java.nio.charset.Charset charset, char... separators)
      Returns a list of NameValuePairs as parsed from the given string using the given character encoding.
      static java.util.List<org.apache.http.NameValuePair> parse​(java.net.URI uri, java.lang.String charsetName)
      Deprecated.
      static java.util.List<org.apache.http.NameValuePair> parse​(java.net.URI uri, java.nio.charset.Charset charset)
      Returns a list of NameValuePairs URI query parameters.
      static void parse​(java.util.List<org.apache.http.NameValuePair> parameters, java.util.Scanner scanner, java.lang.String charset)
      static void parse​(java.util.List<org.apache.http.NameValuePair> parameters, java.util.Scanner scanner, java.lang.String parameterSepartorPattern, java.lang.String charset)
      static java.util.List<org.apache.http.NameValuePair> parse​(org.apache.http.HttpEntity entity)
      Returns a list of NameValuePairs as parsed from an HttpEntity.
      static java.util.List<org.apache.http.NameValuePair> parse​(org.apache.http.util.CharArrayBuffer buf, java.nio.charset.Charset charset, char... separators)
      Returns a list of NameValuePairs parameters.
      static java.util.List<java.lang.String> parsePathSegments​(java.lang.CharSequence s)
      Returns a list of URI path segments.
      static java.util.List<java.lang.String> parsePathSegments​(java.lang.CharSequence s, java.nio.charset.Charset charset)
      Returns a list of URI path segments.
      (package private) static java.util.List<java.lang.String> splitPathSegments​(java.lang.CharSequence s)  
      (package private) static java.util.List<java.lang.String> splitSegments​(java.lang.CharSequence s, java.util.BitSet separators)  
      private static java.lang.String urlDecode​(java.lang.String content, java.nio.charset.Charset charset, boolean plusAsBlank)
      Decode/unescape a portion of a URL, to use with the query part ensure plusAsBlank is true.
      private static java.lang.String urlEncode​(java.lang.String content, java.nio.charset.Charset charset, java.util.BitSet safechars, boolean blankAsPlus)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • CONTENT_TYPE

        public static final java.lang.String CONTENT_TYPE
        The default HTML form content type.
        See Also:
        Constant Field Values
      • NAME_VALUE_SEPARATOR

        private static final java.lang.String NAME_VALUE_SEPARATOR
        See Also:
        Constant Field Values
      • PATH_SEPARATORS

        private static final java.util.BitSet PATH_SEPARATORS
      • UNRESERVED

        private static final java.util.BitSet UNRESERVED
        Unreserved characters, i.e. alphanumeric, plus: _ - ! . ~ ' ( ) *

        This list is the same as the unreserved list in RFC 2396

      • PUNCT

        private static final java.util.BitSet PUNCT
        Punctuation characters: , ; : $ & + =

        These are the additional characters allowed by userinfo.

      • USERINFO

        private static final java.util.BitSet USERINFO
        Characters which are safe to use in userinfo, i.e. UNRESERVED plus PUNCTuation
      • PATHSAFE

        private static final java.util.BitSet PATHSAFE
        Characters which are safe to use in a path, i.e. UNRESERVED plus PUNCTuation plus / @
      • URIC

        private static final java.util.BitSet URIC
        Characters which are safe to use in a query or a fragment, i.e. RESERVED plus UNRESERVED
      • RESERVED

        private static final java.util.BitSet RESERVED
        Reserved characters, i.e. ;/?:@&=+$,[]

        This list is the same as the reserved list in RFC 2396 as augmented by RFC 2732

      • URLENCODER

        private static final java.util.BitSet URLENCODER
        Safe characters for x-www-form-urlencoded data, as per java.net.URLEncoder and browser behaviour, i.e. alphanumeric plus "-", "_", ".", "*"
      • PATH_SPECIAL

        private static final java.util.BitSet PATH_SPECIAL
    • Constructor Detail

      • URLEncodedUtils

        public URLEncodedUtils()
    • Method Detail

      • parse

        @Deprecated
        public static java.util.List<org.apache.http.NameValuePair> parse​(java.net.URI uri,
                                                                          java.lang.String charsetName)
        Deprecated.
      • parse

        public static java.util.List<org.apache.http.NameValuePair> parse​(java.net.URI uri,
                                                                          java.nio.charset.Charset charset)
        Returns a list of NameValuePairs URI query parameters. By convention, '&' and ';' are accepted as parameter separators.
        Parameters:
        uri - input URI.
        charset - parameter charset.
        Returns:
        list of query parameters.
        Since:
        4.5
      • parse

        public static java.util.List<org.apache.http.NameValuePair> parse​(org.apache.http.HttpEntity entity)
                                                                   throws java.io.IOException
        Returns a list of NameValuePairs as parsed from an HttpEntity. The encoding is taken from the entity's Content-Encoding header.

        This is typically used while parsing an HTTP POST.

        Parameters:
        entity - The entity to parse
        Returns:
        a list of NameValuePair as built from the URI's query portion.
        Throws:
        java.io.IOException - If there was an exception getting the entity's data.
      • isEncoded

        public static boolean isEncoded​(org.apache.http.HttpEntity entity)
        Returns true if the entity's Content-Type header is application/x-www-form-urlencoded.
      • parse

        @Deprecated
        public static void parse​(java.util.List<org.apache.http.NameValuePair> parameters,
                                 java.util.Scanner scanner,
                                 java.lang.String charset)
        Adds all parameters within the Scanner to the list of parameters, as encoded by encoding. For example, a scanner containing the string a=1&b=2&c=3 would add the NameValuePairs a=1, b=2, and c=3 to the list of parameters. By convention, '&' and ';' are accepted as parameter separators.
        Parameters:
        parameters - List to add parameters to.
        scanner - Input that contains the parameters to parse.
        charset - Encoding to use when decoding the parameters.
      • parse

        @Deprecated
        public static void parse​(java.util.List<org.apache.http.NameValuePair> parameters,
                                 java.util.Scanner scanner,
                                 java.lang.String parameterSepartorPattern,
                                 java.lang.String charset)
        Adds all parameters within the Scanner to the list of parameters, as encoded by encoding. For example, a scanner containing the string a=1&b=2&c=3 would add the NameValuePairs a=1, b=2, and c=3 to the list of parameters.
        Parameters:
        parameters - List to add parameters to.
        scanner - Input that contains the parameters to parse.
        parameterSepartorPattern - The Pattern string for parameter separators, by convention "[&;]"
        charset - Encoding to use when decoding the parameters.
      • parse

        public static java.util.List<org.apache.http.NameValuePair> parse​(java.lang.String s,
                                                                          java.nio.charset.Charset charset)
        Returns a list of NameValuePairs URI query parameters. By convention, '&' and ';' are accepted as parameter separators.
        Parameters:
        s - URI query component.
        charset - charset to use when decoding the parameters.
        Returns:
        list of query parameters.
        Since:
        4.2
      • parse

        public static java.util.List<org.apache.http.NameValuePair> parse​(java.lang.String s,
                                                                          java.nio.charset.Charset charset,
                                                                          char... separators)
        Returns a list of NameValuePairs as parsed from the given string using the given character encoding.
        Parameters:
        s - input text.
        charset - parameter charset.
        separators - parameter separators.
        Returns:
        list of query parameters.
        Since:
        4.3
      • parse

        public static java.util.List<org.apache.http.NameValuePair> parse​(org.apache.http.util.CharArrayBuffer buf,
                                                                          java.nio.charset.Charset charset,
                                                                          char... separators)
        Returns a list of NameValuePairs parameters.
        Parameters:
        buf - text to parse.
        charset - Encoding to use when decoding the parameters.
        separators - element separators.
        Returns:
        a list of NameValuePair as built from the URI's query portion.
        Since:
        4.4
      • splitSegments

        static java.util.List<java.lang.String> splitSegments​(java.lang.CharSequence s,
                                                              java.util.BitSet separators)
      • splitPathSegments

        static java.util.List<java.lang.String> splitPathSegments​(java.lang.CharSequence s)
      • parsePathSegments

        public static java.util.List<java.lang.String> parsePathSegments​(java.lang.CharSequence s,
                                                                         java.nio.charset.Charset charset)
        Returns a list of URI path segments.
        Parameters:
        s - URI path component.
        charset - parameter charset.
        Returns:
        list of segments.
        Since:
        4.5
      • parsePathSegments

        public static java.util.List<java.lang.String> parsePathSegments​(java.lang.CharSequence s)
        Returns a list of URI path segments.
        Parameters:
        s - URI path component.
        Returns:
        list of segments.
        Since:
        4.5
      • formatSegments

        public static java.lang.String formatSegments​(java.lang.Iterable<java.lang.String> segments,
                                                      java.nio.charset.Charset charset)
        Returns a string consisting of joint encoded path segments.
        Parameters:
        segments - the segments.
        charset - parameter charset.
        Returns:
        URI path component
        Since:
        4.5
      • formatSegments

        public static java.lang.String formatSegments​(java.lang.String... segments)
        Returns a string consisting of joint encoded path segments.
        Parameters:
        segments - the segments.
        Returns:
        URI path component
        Since:
        4.5
      • format

        public static java.lang.String format​(java.util.List<? extends org.apache.http.NameValuePair> parameters,
                                              java.lang.String charset)
        Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
        Parameters:
        parameters - The parameters to include.
        charset - The encoding to use.
        Returns:
        An application/x-www-form-urlencoded string
      • format

        public static java.lang.String format​(java.util.List<? extends org.apache.http.NameValuePair> parameters,
                                              char parameterSeparator,
                                              java.lang.String charset)
        Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
        Parameters:
        parameters - The parameters to include.
        parameterSeparator - The parameter separator, by convention, '&' or ';'.
        charset - The encoding to use.
        Returns:
        An application/x-www-form-urlencoded string
        Since:
        4.3
      • format

        public static java.lang.String format​(java.lang.Iterable<? extends org.apache.http.NameValuePair> parameters,
                                              java.nio.charset.Charset charset)
        Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
        Parameters:
        parameters - The parameters to include.
        charset - The encoding to use.
        Returns:
        An application/x-www-form-urlencoded string
        Since:
        4.2
      • format

        public static java.lang.String format​(java.lang.Iterable<? extends org.apache.http.NameValuePair> parameters,
                                              char parameterSeparator,
                                              java.nio.charset.Charset charset)
        Returns a String that is suitable for use as an application/x-www-form-urlencoded list of parameters in an HTTP PUT or HTTP POST.
        Parameters:
        parameters - The parameters to include.
        parameterSeparator - The parameter separator, by convention, '&' or ';'.
        charset - The encoding to use.
        Returns:
        An application/x-www-form-urlencoded string
        Since:
        4.3
      • createEmptyList

        private static java.util.List<org.apache.http.NameValuePair> createEmptyList()
      • urlEncode

        private static java.lang.String urlEncode​(java.lang.String content,
                                                  java.nio.charset.Charset charset,
                                                  java.util.BitSet safechars,
                                                  boolean blankAsPlus)
      • urlDecode

        private static java.lang.String urlDecode​(java.lang.String content,
                                                  java.nio.charset.Charset charset,
                                                  boolean plusAsBlank)
        Decode/unescape a portion of a URL, to use with the query part ensure plusAsBlank is true.
        Parameters:
        content - the portion to decode
        charset - the charset to use
        plusAsBlank - if true, then convert '+' to space (e.g. for www-url-form-encoded content), otherwise leave as is.
        Returns:
        encoded string
      • decodeFormFields

        private static java.lang.String decodeFormFields​(java.lang.String content,
                                                         java.lang.String charset)
        Decode/unescape www-url-form-encoded content.
        Parameters:
        content - the content to decode, will decode '+' as space
        charset - the charset to use
        Returns:
        encoded string
      • decodeFormFields

        private static java.lang.String decodeFormFields​(java.lang.String content,
                                                         java.nio.charset.Charset charset)
        Decode/unescape www-url-form-encoded content.
        Parameters:
        content - the content to decode, will decode '+' as space
        charset - the charset to use
        Returns:
        encoded string
      • encodeFormFields

        private static java.lang.String encodeFormFields​(java.lang.String content,
                                                         java.lang.String charset)
        Encode/escape www-url-form-encoded content.

        Uses the URLENCODER set of characters, rather than the UNRESERVED set; this is for compatibilty with previous releases, URLEncoder.encode() and most browsers.

        Parameters:
        content - the content to encode, will convert space to '+'
        charset - the charset to use
        Returns:
        encoded string
      • encodeFormFields

        private static java.lang.String encodeFormFields​(java.lang.String content,
                                                         java.nio.charset.Charset charset)
        Encode/escape www-url-form-encoded content.

        Uses the URLENCODER set of characters, rather than the UNRESERVED set; this is for compatibilty with previous releases, URLEncoder.encode() and most browsers.

        Parameters:
        content - the content to encode, will convert space to '+'
        charset - the charset to use
        Returns:
        encoded string
      • encUserInfo

        static java.lang.String encUserInfo​(java.lang.String content,
                                            java.nio.charset.Charset charset)
        Encode a String using the USERINFO set of characters.

        Used by URIBuilder to encode the userinfo segment.

        Parameters:
        content - the string to encode, does not convert space to '+'
        charset - the charset to use
        Returns:
        the encoded string
      • encUric

        static java.lang.String encUric​(java.lang.String content,
                                        java.nio.charset.Charset charset)
        Encode a String using the URIC set of characters.

        Used by URIBuilder to encode the query and fragment segments.

        Parameters:
        content - the string to encode, does not convert space to '+'
        charset - the charset to use
        Returns:
        the encoded string
      • encPath

        static java.lang.String encPath​(java.lang.String content,
                                        java.nio.charset.Charset charset)
        Encode a String using the PATH_SPECIAL set of characters.

        Used by URIBuilder to encode path segments.

        Parameters:
        content - the string to encode, does not convert space to '+'
        charset - the charset to use
        Returns:
        the encoded string