Class URIBuilder
- java.lang.Object
-
- org.apache.hc.core5.net.URIBuilder
-
public class URIBuilder extends java.lang.Object
Builder forURI
instances.- Since:
- 5.0
-
-
Field Summary
Fields Modifier and Type Field Description private java.nio.charset.Charset
charset
private java.lang.String
encodedAuthority
private java.lang.String
encodedFragment
private java.lang.String
encodedPath
private java.lang.String
encodedQuery
private java.lang.String
encodedSchemeSpecificPart
private java.lang.String
encodedUserInfo
private java.lang.String
fragment
private java.lang.String
host
private static char
PARAM_VALUE_SEPARATOR
private static char
PATH_SEPARATOR
private static java.util.BitSet
PATH_SEPARATORS
private boolean
pathRootless
private java.util.List<java.lang.String>
pathSegments
private int
port
private java.lang.String
query
private static char
QUERY_PARAM_SEPARATOR
private static java.util.BitSet
QUERY_PARAM_SEPARATORS
private static java.util.BitSet
QUERY_VALUE_SEPARATORS
private java.util.List<NameValuePair>
queryParams
private java.lang.String
scheme
private java.lang.String
userInfo
-
Constructor Summary
Constructors Constructor Description URIBuilder()
Constructs an empty instance.URIBuilder(java.lang.String uriString)
Constructs an instance from the string which must be a valid URI.URIBuilder(java.lang.String uriString, java.nio.charset.Charset charset)
Constructs an instance from the string which must be a valid URI.URIBuilder(java.net.URI uri)
Constructs an instance from the provided URI.URIBuilder(java.net.URI uri, java.nio.charset.Charset charset)
Constructs an instance from the provided URI.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description URIBuilder
addParameter(java.lang.String param, java.lang.String value)
Adds parameter to URI query.URIBuilder
addParameter(NameValuePair nameValuePair)
Adds parameter to URI query.URIBuilder
addParameters(java.util.List<NameValuePair> nameValuePairs)
Adds URI query parameters.URIBuilder
appendPath(java.lang.String path)
Appends path to URI.URIBuilder
appendPathSegments(java.lang.String... pathSegments)
Appends segments URI path.URIBuilder
appendPathSegments(java.util.List<java.lang.String> pathSegments)
Appends segments to URI path.java.net.URI
build()
Builds aURI
instance.private java.lang.String
buildString()
URIBuilder
clearParameters()
Clears URI query parameters.private void
digestURI(java.net.URI uri, java.nio.charset.Charset charset)
(package private) static void
formatPath(java.lang.StringBuilder buf, java.lang.Iterable<java.lang.String> segments, boolean rootless, java.nio.charset.Charset charset)
(package private) static void
formatQuery(java.lang.StringBuilder buf, java.lang.Iterable<? extends NameValuePair> params, java.nio.charset.Charset charset, boolean blankAsPlus)
URIAuthority
getAuthority()
Gets the authority.java.nio.charset.Charset
getCharset()
Gets the Charset.NameValuePair
getFirstQueryParam(java.lang.String name)
Gets the firstNameValuePair
for a given name.java.lang.String
getFragment()
Gets the fragments.java.lang.String
getHost()
Gets the host portion of theURI
.java.lang.String
getPath()
Gets the path.java.util.List<java.lang.String>
getPathSegments()
Gets the path segments.int
getPort()
Gets the port.java.util.List<NameValuePair>
getQueryParams()
Gets the query parameters as a List.java.lang.String
getScheme()
Gets the scheme.java.lang.String
getSchemeSpecificPart()
Gets the scheme specific part.java.lang.String
getUserInfo()
Gets the user info.boolean
isAbsolute()
Tests whether the URI is absolute.boolean
isOpaque()
Tests whether the URI is opaque.boolean
isPathEmpty()
Tests whether the path is empty.boolean
isQueryEmpty()
Tests whether the query is empty.static URIBuilder
localhost()
Creates a new builder for the hostInetAddress.getLocalHost()
.static URIBuilder
loopbackAddress()
Creates a new builder for the hostInetAddress.getLoopbackAddress()
.URIBuilder
normalizeSyntax()
Normalizes syntax of URI components if the URI is considered non-opaque (the path component has a root): characters of scheme and host components are converted to lower case dot segments of the path component are removed if the path has a root percent encoding of all components is normalized(package private) static java.util.List<java.lang.String>
parsePath(java.lang.CharSequence s, java.nio.charset.Charset charset)
(package private) static java.util.List<NameValuePair>
parseQuery(java.lang.CharSequence s, java.nio.charset.Charset charset, boolean plusAsBlank)
URIBuilder
removeParameter(java.lang.String param)
Removes parameter of URI query if set.URIBuilder
removeQuery()
Removes URI query.URIBuilder
setAuthority(NamedEndpoint authority)
Sets the authority.URIBuilder
setAuthority(URIAuthority authority)
Sets the authority.URIBuilder
setCharset(java.nio.charset.Charset charset)
Sets the Charset.URIBuilder
setCustomQuery(java.lang.String query)
Sets custom URI query.URIBuilder
setFragment(java.lang.String fragment)
Sets URI fragment.URIBuilder
setHost(java.lang.String host)
Sets URI host.URIBuilder
setHost(java.net.InetAddress host)
Sets URI host.URIBuilder
setHttpHost(HttpHost httpHost)
Sets the scheme, host name, and port.URIBuilder
setParameter(java.lang.String param, java.lang.String value)
Sets parameter of URI query overriding existing value if set.URIBuilder
setParameters(java.util.List<NameValuePair> nameValuePairs)
Sets URI query parameters.URIBuilder
setParameters(NameValuePair... nameValuePairs)
Sets URI query parameters.URIBuilder
setPath(java.lang.String path)
Sets URI path.URIBuilder
setPathSegments(java.lang.String... pathSegments)
Sets URI path.URIBuilder
setPathSegments(java.util.List<java.lang.String> pathSegments)
Sets URI path.URIBuilder
setPathSegmentsRootless(java.lang.String... pathSegments)
Sets rootless URI path (the first segment does not start with a /).URIBuilder
setPathSegmentsRootless(java.util.List<java.lang.String> pathSegments)
Sets rootless URI path (the first segment does not start with a /).URIBuilder
setPort(int port)
Sets URI port.URIBuilder
setScheme(java.lang.String scheme)
Sets URI scheme.URIBuilder
setSchemeSpecificPart(java.lang.String schemeSpecificPart)
Sets the URI scheme specific part.URIBuilder
setSchemeSpecificPart(java.lang.String schemeSpecificPart, java.util.List<NameValuePair> nvps)
Sets the URI scheme specific part and append a list of NameValuePair to this part.URIBuilder
setSchemeSpecificPart(java.lang.String schemeSpecificPart, NameValuePair... nvps)
Sets the URI scheme specific part and append a variable arguments list of NameValuePair instance(s) to this part.URIBuilder
setUserInfo(java.lang.String userInfo)
Sets URI user info.URIBuilder
setUserInfo(java.lang.String username, java.lang.String password)
Deprecated.The use of clear-text passwords inURI
s has been deprecated and is strongly discouraged.(package private) static java.util.List<java.lang.String>
splitPath(java.lang.CharSequence s)
java.lang.String
toString()
Converts this instance to a URI string.
-
-
-
Field Detail
-
scheme
private java.lang.String scheme
-
encodedSchemeSpecificPart
private java.lang.String encodedSchemeSpecificPart
-
encodedAuthority
private java.lang.String encodedAuthority
-
userInfo
private java.lang.String userInfo
-
encodedUserInfo
private java.lang.String encodedUserInfo
-
host
private java.lang.String host
-
port
private int port
-
encodedPath
private java.lang.String encodedPath
-
pathRootless
private boolean pathRootless
-
pathSegments
private java.util.List<java.lang.String> pathSegments
-
encodedQuery
private java.lang.String encodedQuery
-
queryParams
private java.util.List<NameValuePair> queryParams
-
query
private java.lang.String query
-
charset
private java.nio.charset.Charset charset
-
fragment
private java.lang.String fragment
-
encodedFragment
private java.lang.String encodedFragment
-
QUERY_PARAM_SEPARATOR
private static final char QUERY_PARAM_SEPARATOR
- See Also:
- Constant Field Values
-
PARAM_VALUE_SEPARATOR
private static final char PARAM_VALUE_SEPARATOR
- See Also:
- Constant Field Values
-
PATH_SEPARATOR
private static final char PATH_SEPARATOR
- See Also:
- Constant Field Values
-
QUERY_PARAM_SEPARATORS
private static final java.util.BitSet QUERY_PARAM_SEPARATORS
-
QUERY_VALUE_SEPARATORS
private static final java.util.BitSet QUERY_VALUE_SEPARATORS
-
PATH_SEPARATORS
private static final java.util.BitSet PATH_SEPARATORS
-
-
Constructor Detail
-
URIBuilder
public URIBuilder()
Constructs an empty instance.
-
URIBuilder
public URIBuilder(java.lang.String uriString) throws java.net.URISyntaxException
Constructs an instance from the string which must be a valid URI.- Parameters:
uriString
- a valid URI in string form.- Throws:
java.net.URISyntaxException
- if the input is not a valid URI.
-
URIBuilder
public URIBuilder(java.net.URI uri)
Constructs an instance from the provided URI.- Parameters:
uri
- a URI.
-
URIBuilder
public URIBuilder(java.lang.String uriString, java.nio.charset.Charset charset) throws java.net.URISyntaxException
Constructs an instance from the string which must be a valid URI.- Parameters:
uriString
- a valid URI in string form.- Throws:
java.net.URISyntaxException
- if the input is not a valid URI
-
URIBuilder
public URIBuilder(java.net.URI uri, java.nio.charset.Charset charset)
Constructs an instance from the provided URI.- Parameters:
uri
- a URI.
-
-
Method Detail
-
localhost
public static URIBuilder localhost() throws java.net.UnknownHostException
Creates a new builder for the hostInetAddress.getLocalHost()
.- Returns:
- a new builder.
- Throws:
java.net.UnknownHostException
- if the local host name could not be resolved into an address.
-
loopbackAddress
public static URIBuilder loopbackAddress()
Creates a new builder for the hostInetAddress.getLoopbackAddress()
.
-
setAuthority
public URIBuilder setAuthority(NamedEndpoint authority)
Sets the authority.- Parameters:
authority
- the authority.- Returns:
- this.
- Since:
- 5.2
-
setAuthority
public URIBuilder setAuthority(URIAuthority authority)
Sets the authority.- Parameters:
authority
- the authority.- Returns:
- this.
- Since:
- 5.2
-
setCharset
public URIBuilder setCharset(java.nio.charset.Charset charset)
Sets the Charset.- Parameters:
charset
- the Charset.- Returns:
- this.
-
getAuthority
public URIAuthority getAuthority()
Gets the authority.- Returns:
- the authority.
- Since:
- 5.2
-
getCharset
public java.nio.charset.Charset getCharset()
Gets the Charset.- Returns:
- the Charset.
-
parseQuery
static java.util.List<NameValuePair> parseQuery(java.lang.CharSequence s, java.nio.charset.Charset charset, boolean plusAsBlank)
-
splitPath
static java.util.List<java.lang.String> splitPath(java.lang.CharSequence s)
-
parsePath
static java.util.List<java.lang.String> parsePath(java.lang.CharSequence s, java.nio.charset.Charset charset)
-
formatPath
static void formatPath(java.lang.StringBuilder buf, java.lang.Iterable<java.lang.String> segments, boolean rootless, java.nio.charset.Charset charset)
-
formatQuery
static void formatQuery(java.lang.StringBuilder buf, java.lang.Iterable<? extends NameValuePair> params, java.nio.charset.Charset charset, boolean blankAsPlus)
-
build
public java.net.URI build() throws java.net.URISyntaxException
Builds aURI
instance.- Throws:
java.net.URISyntaxException
-
buildString
private java.lang.String buildString()
-
digestURI
private void digestURI(java.net.URI uri, java.nio.charset.Charset charset)
-
setScheme
public URIBuilder setScheme(java.lang.String scheme)
Sets URI scheme.- Returns:
- this.
-
setSchemeSpecificPart
public URIBuilder setSchemeSpecificPart(java.lang.String schemeSpecificPart)
Sets the URI scheme specific part.- Parameters:
schemeSpecificPart
-- Returns:
- this.
- Since:
- 5.1
-
setSchemeSpecificPart
public URIBuilder setSchemeSpecificPart(java.lang.String schemeSpecificPart, NameValuePair... nvps)
Sets the URI scheme specific part and append a variable arguments list of NameValuePair instance(s) to this part.- Parameters:
schemeSpecificPart
-nvps
- Optional, can be null. Variable arguments list of NameValuePair query parameters to be reused by the specific scheme part- Returns:
- this.
- Since:
- 5.1
-
setSchemeSpecificPart
public URIBuilder setSchemeSpecificPart(java.lang.String schemeSpecificPart, java.util.List<NameValuePair> nvps)
Sets the URI scheme specific part and append a list of NameValuePair to this part.- Parameters:
schemeSpecificPart
-nvps
- Optional, can be null. List of query parameters to be reused by the specific scheme part- Returns:
- this.
- Since:
- 5.1
-
setUserInfo
public URIBuilder setUserInfo(java.lang.String userInfo)
Sets URI user info. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
setUserInfo
@Deprecated public URIBuilder setUserInfo(java.lang.String username, java.lang.String password)
Deprecated.The use of clear-text passwords inURI
s has been deprecated and is strongly discouraged.Sets URI user info as a combination of username and password. These values are expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
setHost
public URIBuilder setHost(java.net.InetAddress host)
Sets URI host.- Returns:
- this.
-
setHost
public URIBuilder setHost(java.lang.String host)
Sets URI host. The input value must not already be URI encoded, for example::1
is valid however[::1]
is not. It is dangerous to calluriBuilder.setHost(uri.getHost())
due toURI.getHost()
returning URI encoded values.- Returns:
- this.
-
setHttpHost
public URIBuilder setHttpHost(HttpHost httpHost)
Sets the scheme, host name, and port.- Parameters:
httpHost
- the scheme, host name, and port.- Returns:
- this.
-
setPort
public URIBuilder setPort(int port)
Sets URI port.- Returns:
- this.
-
setPath
public URIBuilder setPath(java.lang.String path)
Sets URI path. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
appendPath
public URIBuilder appendPath(java.lang.String path)
Appends path to URI. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
setPathSegments
public URIBuilder setPathSegments(java.lang.String... pathSegments)
Sets URI path. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
appendPathSegments
public URIBuilder appendPathSegments(java.lang.String... pathSegments)
Appends segments URI path. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
setPathSegmentsRootless
public URIBuilder setPathSegmentsRootless(java.lang.String... pathSegments)
Sets rootless URI path (the first segment does not start with a /). The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
- Since:
- 5.1
-
setPathSegments
public URIBuilder setPathSegments(java.util.List<java.lang.String> pathSegments)
Sets URI path. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
appendPathSegments
public URIBuilder appendPathSegments(java.util.List<java.lang.String> pathSegments)
Appends segments to URI path. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
setPathSegmentsRootless
public URIBuilder setPathSegmentsRootless(java.util.List<java.lang.String> pathSegments)
Sets rootless URI path (the first segment does not start with a /). The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
- Since:
- 5.1
-
removeQuery
public URIBuilder removeQuery()
Removes URI query.- Returns:
- this.
-
setParameters
public URIBuilder setParameters(java.util.List<NameValuePair> nameValuePairs)
Sets URI query parameters. The parameter name / values are expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove custom query if present.
- Returns:
- this.
-
addParameters
public URIBuilder addParameters(java.util.List<NameValuePair> nameValuePairs)
Adds URI query parameters. The parameter name / values are expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove custom query if present.
- Returns:
- this.
-
setParameters
public URIBuilder setParameters(NameValuePair... nameValuePairs)
Sets URI query parameters. The parameter name / values are expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove custom query if present.
- Returns:
- this.
-
addParameter
public URIBuilder addParameter(java.lang.String param, java.lang.String value)
Adds parameter to URI query. The parameter name and value are expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove custom query if present.
- Returns:
- this.
-
addParameter
public URIBuilder addParameter(NameValuePair nameValuePair)
Adds parameter to URI query. The parameter name and value are expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove custom query if present.
- Returns:
- this.
- Since:
- 5.2
-
removeParameter
public URIBuilder removeParameter(java.lang.String param)
Removes parameter of URI query if set. The parameter name is expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove custom query if present, even when no parameter was actually removed.
- Returns:
- this.
- Since:
- 5.2
-
setParameter
public URIBuilder setParameter(java.lang.String param, java.lang.String value)
Sets parameter of URI query overriding existing value if set. The parameter name and value are expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove custom query if present.
- Returns:
- this.
-
clearParameters
public URIBuilder clearParameters()
Clears URI query parameters.- Returns:
- this.
-
setCustomQuery
public URIBuilder setCustomQuery(java.lang.String query)
Sets custom URI query. The value is expected to be unescaped and may contain non ASCII characters.Please note query parameters and custom query component are mutually exclusive. This method will remove query parameters if present.
- Returns:
- this.
-
setFragment
public URIBuilder setFragment(java.lang.String fragment)
Sets URI fragment. The value is expected to be unescaped and may contain non ASCII characters.- Returns:
- this.
-
isAbsolute
public boolean isAbsolute()
Tests whether the URI is absolute.- Returns:
- whether the URI is absolute.
-
isOpaque
public boolean isOpaque()
Tests whether the URI is opaque.- Returns:
- whether the URI is opaque.
-
getScheme
public java.lang.String getScheme()
Gets the scheme.- Returns:
- the scheme.
-
getSchemeSpecificPart
public java.lang.String getSchemeSpecificPart()
Gets the scheme specific part.- Returns:
- String
- Since:
- 5.1
-
getUserInfo
public java.lang.String getUserInfo()
Gets the user info.- Returns:
- the user info.
-
getHost
public java.lang.String getHost()
Gets the host portion of theURI
. This method returns unencoded IPv6 addresses (without brackets). This behavior differs from values returned byURI.getHost()
.- Returns:
- The host portion of the URI.
-
getPort
public int getPort()
Gets the port.- Returns:
- the port.
-
isPathEmpty
public boolean isPathEmpty()
Tests whether the path is empty.- Returns:
- whether the path is empty.
-
getPathSegments
public java.util.List<java.lang.String> getPathSegments()
Gets the path segments.- Returns:
- the path segments.
-
getPath
public java.lang.String getPath()
Gets the path.- Returns:
- the path.
-
isQueryEmpty
public boolean isQueryEmpty()
Tests whether the query is empty.- Returns:
- whether the query is empty.
-
getQueryParams
public java.util.List<NameValuePair> getQueryParams()
Gets the query parameters as a List.- Returns:
- the query parameters as a List.
-
getFirstQueryParam
public NameValuePair getFirstQueryParam(java.lang.String name)
Gets the firstNameValuePair
for a given name.- Parameters:
name
- the name- Returns:
- the first named
NameValuePair
or null if not found. - Since:
- 5.2
-
getFragment
public java.lang.String getFragment()
Gets the fragments.- Returns:
- the fragments.
-
normalizeSyntax
public URIBuilder normalizeSyntax()
Normalizes syntax of URI components if the URI is considered non-opaque (the path component has a root):- characters of scheme and host components are converted to lower case
- dot segments of the path component are removed if the path has a root
- percent encoding of all components is normalized
- Since:
- 5.1
-
toString
public java.lang.String toString()
Converts this instance to a URI string.- Overrides:
toString
in classjava.lang.Object
- Returns:
- this instance to a URI string.
-
-