org.springframework.web.util
Class UriUtils

java.lang.Object
  extended by org.springframework.web.util.UriUtils

public abstract class UriUtils
extends java.lang.Object

Utility class for URI encoding and decoding based on RFC 3986. Offers encoding methods for the various URI components.

All encode*(String, String methods in this class operate in a similar way:

Since:
3.0
Author:
Arjen Poutsma
See Also:
RFC 3986

Constructor Summary
UriUtils()
           
 
Method Summary
static java.lang.String decode(java.lang.String source, java.lang.String encoding)
          Decodes the given encoded source String into an URI.
static java.lang.String encodeAuthority(java.lang.String authority, java.lang.String encoding)
          Encodes the given URI authority with the given encoding.
static java.lang.String encodeFragment(java.lang.String fragment, java.lang.String encoding)
          Encodes the given URI fragment with the given encoding.
static java.lang.String encodeHost(java.lang.String host, java.lang.String encoding)
          Encodes the given URI host with the given encoding.
static java.lang.String encodeHttpUrl(java.lang.String httpUrl, java.lang.String encoding)
          Encodes the given HTTP URI into an encoded String.
static java.lang.String encodePath(java.lang.String path, java.lang.String encoding)
          Encodes the given URI path with the given encoding.
static java.lang.String encodePathSegment(java.lang.String segment, java.lang.String encoding)
          Encodes the given URI path segment with the given encoding.
static java.lang.String encodePort(java.lang.String port, java.lang.String encoding)
          Encodes the given URI port with the given encoding.
static java.lang.String encodeQuery(java.lang.String query, java.lang.String encoding)
          Encodes the given URI query with the given encoding.
static java.lang.String encodeQueryParam(java.lang.String queryParam, java.lang.String encoding)
          Encodes the given URI query parameter with the given encoding.
static java.lang.String encodeScheme(java.lang.String scheme, java.lang.String encoding)
          Encodes the given URI scheme with the given encoding.
static java.lang.String encodeUri(java.lang.String uri, java.lang.String encoding)
          Encodes the given source URI into an encoded String.
static java.lang.String encodeUriComponents(java.lang.String scheme, java.lang.String authority, java.lang.String userInfo, java.lang.String host, java.lang.String port, java.lang.String path, java.lang.String query, java.lang.String fragment, java.lang.String encoding)
          Encodes the given source URI components into an encoded String.
static java.lang.String encodeUserInfo(java.lang.String userInfo, java.lang.String encoding)
          Encodes the given URI user info with the given encoding.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

UriUtils

public UriUtils()
Method Detail

encodeUri

public static java.lang.String encodeUri(java.lang.String uri,
                                         java.lang.String encoding)
                                  throws java.io.UnsupportedEncodingException
Encodes the given source URI into an encoded String. All various URI components are encoded according to their respective valid character sets.

Parameters:
uri - the URI to be encoded
encoding - the character encoding to encode to
Returns:
the encoded URI
Throws:
java.lang.IllegalArgumentException - when the given uri parameter is not a valid URI
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeHttpUrl

public static java.lang.String encodeHttpUrl(java.lang.String httpUrl,
                                             java.lang.String encoding)
                                      throws java.io.UnsupportedEncodingException
Encodes the given HTTP URI into an encoded String. All various URI components are encoded according to their respective valid character sets.

Note that this method does not support fragments (#), as these are not supposed to be sent to the server, but retained by the client.

Parameters:
httpUrl - the HTTP URL to be encoded
encoding - the character encoding to encode to
Returns:
the encoded URL
Throws:
java.lang.IllegalArgumentException - when the given uri parameter is not a valid URI
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeUriComponents

public static java.lang.String encodeUriComponents(java.lang.String scheme,
                                                   java.lang.String authority,
                                                   java.lang.String userInfo,
                                                   java.lang.String host,
                                                   java.lang.String port,
                                                   java.lang.String path,
                                                   java.lang.String query,
                                                   java.lang.String fragment,
                                                   java.lang.String encoding)
                                            throws java.io.UnsupportedEncodingException
Encodes the given source URI components into an encoded String. All various URI components are optional, but encoded according to their respective valid character sets.

Parameters:
scheme - the scheme
authority - the authority
userInfo - the user info
host - the host
port - the port
path - the path
query - the query
fragment - the fragment
encoding - the character encoding to encode to
Returns:
the encoded URI
Throws:
java.lang.IllegalArgumentException - when the given uri parameter is not a valid URI
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeScheme

public static java.lang.String encodeScheme(java.lang.String scheme,
                                            java.lang.String encoding)
                                     throws java.io.UnsupportedEncodingException
Encodes the given URI scheme with the given encoding.

Parameters:
scheme - the scheme to be encoded
encoding - the character encoding to encode to
Returns:
the encoded scheme
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeAuthority

public static java.lang.String encodeAuthority(java.lang.String authority,
                                               java.lang.String encoding)
                                        throws java.io.UnsupportedEncodingException
Encodes the given URI authority with the given encoding.

Parameters:
authority - the authority to be encoded
encoding - the character encoding to encode to
Returns:
the encoded authority
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeUserInfo

public static java.lang.String encodeUserInfo(java.lang.String userInfo,
                                              java.lang.String encoding)
                                       throws java.io.UnsupportedEncodingException
Encodes the given URI user info with the given encoding.

Parameters:
userInfo - the user info to be encoded
encoding - the character encoding to encode to
Returns:
the encoded user info
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeHost

public static java.lang.String encodeHost(java.lang.String host,
                                          java.lang.String encoding)
                                   throws java.io.UnsupportedEncodingException
Encodes the given URI host with the given encoding.

Parameters:
host - the host to be encoded
encoding - the character encoding to encode to
Returns:
the encoded host
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodePort

public static java.lang.String encodePort(java.lang.String port,
                                          java.lang.String encoding)
                                   throws java.io.UnsupportedEncodingException
Encodes the given URI port with the given encoding.

Parameters:
port - the port to be encoded
encoding - the character encoding to encode to
Returns:
the encoded port
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodePath

public static java.lang.String encodePath(java.lang.String path,
                                          java.lang.String encoding)
                                   throws java.io.UnsupportedEncodingException
Encodes the given URI path with the given encoding.

Parameters:
path - the path to be encoded
encoding - the character encoding to encode to
Returns:
the encoded path
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodePathSegment

public static java.lang.String encodePathSegment(java.lang.String segment,
                                                 java.lang.String encoding)
                                          throws java.io.UnsupportedEncodingException
Encodes the given URI path segment with the given encoding.

Parameters:
segment - the segment to be encoded
encoding - the character encoding to encode to
Returns:
the encoded segment
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeQuery

public static java.lang.String encodeQuery(java.lang.String query,
                                           java.lang.String encoding)
                                    throws java.io.UnsupportedEncodingException
Encodes the given URI query with the given encoding.

Parameters:
query - the query to be encoded
encoding - the character encoding to encode to
Returns:
the encoded query
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeQueryParam

public static java.lang.String encodeQueryParam(java.lang.String queryParam,
                                                java.lang.String encoding)
                                         throws java.io.UnsupportedEncodingException
Encodes the given URI query parameter with the given encoding.

Parameters:
queryParam - the query parameter to be encoded
encoding - the character encoding to encode to
Returns:
the encoded query parameter
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

encodeFragment

public static java.lang.String encodeFragment(java.lang.String fragment,
                                              java.lang.String encoding)
                                       throws java.io.UnsupportedEncodingException
Encodes the given URI fragment with the given encoding.

Parameters:
fragment - the fragment to be encoded
encoding - the character encoding to encode to
Returns:
the encoded fragment
Throws:
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported

decode

public static java.lang.String decode(java.lang.String source,
                                      java.lang.String encoding)
                               throws java.io.UnsupportedEncodingException
Decodes the given encoded source String into an URI. Based on the following rules:

Parameters:
source - the source string
encoding - the encoding
Returns:
the decoded URI
Throws:
java.lang.IllegalArgumentException - when the given source contains invalid encoded sequences
java.io.UnsupportedEncodingException - when the given encoding parameter is not supported
See Also:
URLDecoder.decode(String, String)