Class Config
- java.lang.Object
-
- kong.unirest.core.Config
-
public class Config extends Object
-
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_CONNECT_TIMEOUTstatic StringJDK_HTTPCLIENT_KEEPALIVE_TIMEOUT
-
Constructor Summary
Constructors Constructor Description Config()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ConfigaddDefaultCookie(String name, String value)Adds a default cookie to be added to all requests with this configConfigaddDefaultCookie(Cookie cookie)Adds a default cookie to be added to all requests with this configConfigaddDefaultHeader(String name, String value)Add default header to appear on all requestsConfigcacheResponses(boolean value)Enable Response Caching with default optionsConfigcacheResponses(Cache.Builder value)Enable Response Caching with custom optionsConfigciphers(String... values)Set a custom array of ciphersConfigclearDefaultHeaders()Clear default headersConfigclientCertificateStore(String fileLocation, String password)Set a custom keystore via a file path.ConfigclientCertificateStore(KeyStore store, String password)Set a custom keystoreConfigconnectionTTL(long duration, TimeUnit unit)Sets the jdk.httpclient.keepalive.timeout setting https://docs.oracle.com/en/java/javase/20/docs/api/java.net.http/module-summary.html The number of seconds to keep idle HTTP connections alive in the keep alive cache.ConfigconnectionTTL(Duration duration)Sets the jdk.httpclient.keepalive.timeout setting https://docs.oracle.com/en/java/javase/20/docs/api/java.net.http/module-summary.html The number of seconds to keep idle HTTP connections alive in the keep alive cache.ConfigconnectTimeout(int inMillies)Sets the connect timeout duration for this client.ConfigcookieSpec(String policy)Sets a cookie policy Acceptable values: 'default' (same as Netscape), 'netscape', 'ignoreCookies', 'standard' (RFC 6265 interoprability profile) , 'standard-strict' (RFC 6265 strict profile)ConfigdefaultBaseUrl(String value)set a default base url for all routes.ConfigenableCookieManagement(boolean enable)Allow the client to manage cookies.Configexecutor(Executor executor)Sets a custom executor for requestsConfigfollowRedirects(boolean enable)Allow the client to follow redirects.String[]getCiphers()ClientgetClient()Return the current Client.intgetConnectionTimeout()StringgetCookieSpec()ExecutorgetCustomExecutor()StringgetDefaultBaseUrl()HeadersgetDefaultHeaders()Return default headers that are added to every requestStringgetDefaultResponseEncoding()booleangetEnabledCookieManagement()booleangetFollowRedirects()KeyStoregetKeystore()StringgetKeyStorePassword()UniMetricgetMetric()ObjectMappergetObjectMapper()String[]getProtocols()ProxygetProxy()IntegergetRequestTimeout()RetryStrategygetRetryStrategy()SSLContextgetSslContext()longgetTTL()InterceptorgetUniInterceptor()HttpClient.VersiongetVersion()ConfighttpClient(Function<Config,Client> httpClient)Provide a builder for a clientConfighttpClient(Client httpClient)Set the HttpClient implementation to use for every synchronous requestConfiginstrumentWith(UniMetric metric)Add a metric object for instrumentationConfiginterceptor(Interceptor value)Add a Interceptor which will be called before and after the request;booleanisAutomaticRetryAfter()booleanisRequestCompressionOn()booleanisRunning()Does the config have currently running clients? Find out here.booleanisVerifySsl()Will unirest verify the SSL? You should only do this in non-prod environments.intmaxRetries()Configprotocols(String... values)Set a custom array of protocolsConfigproxy(String host, int port)Set a proxyConfigproxy(String host, int port, String username, String password)Set an authenticated proxyConfigproxy(Proxy value)Set a proxyConfigrequestCompression(boolean value)Turn on or off requesting all content as compressed.ConfigrequestTimeout(Integer inMillies)Sets a default timeout for all requests.Configreset()Shutdown the current config and re-init.voidreset(boolean clearOptions)Shut down the configuration and its clients.ConfigretryAfter(boolean value)Automatically retry synchronous requests on 429/529 responses with the Retry-After response header Default is falseConfigretryAfter(boolean value, int maxRetryAttempts)Automatically retry synchronous requests on 429/529 responses with the Retry-After response header Default is falseConfigretryAfter(RetryStrategy strategy)Automatically retry synchronous requests on 429/529 responses with the Retry-After response header Default is falseConfigsetDefaultBasicAuth(String username, String password)Default basic auth credentialsConfigsetDefaultHeader(String name, String value)Set default header to appear on all requestsConfigsetDefaultHeader(String name, Supplier<String> value)Set default header to appear on all requests, value is through a Supplier This is useful for adding tracing elements to requests.ConfigsetDefaultResponseEncoding(String value)Set the default encoding that will be used for serialization into Strings.ConfigsetObjectMapper(ObjectMapper om)Set the ObjectMapper implementation to use for Response to Object bindingConfigsslContext(SSLContext ssl)Set a custom SSLContext.booleanuseSystemProperties()ConfiguseSystemProperties(boolean value)Tell the HttpClients to use the system properties for things like proxiesConfigverifySsl(boolean value)Toggle verifying SSL/TLS certificates.Configversion(HttpClient.Version value)Requests a specific HTTP protocol version where possible.
-
-
-
Field Detail
-
DEFAULT_CONNECT_TIMEOUT
public static final int DEFAULT_CONNECT_TIMEOUT
- See Also:
- Constant Field Values
-
JDK_HTTPCLIENT_KEEPALIVE_TIMEOUT
public static final String JDK_HTTPCLIENT_KEEPALIVE_TIMEOUT
- See Also:
- Constant Field Values
-
-
Method Detail
-
httpClient
public Config httpClient(Client httpClient)
Set the HttpClient implementation to use for every synchronous request- Parameters:
httpClient- Custom httpClient implementation- Returns:
- this config object
-
httpClient
public Config httpClient(Function<Config,Client> httpClient)
Provide a builder for a client- Parameters:
httpClient- Custom httpClient implementation- Returns:
- this config object
-
executor
public Config executor(Executor executor)
Sets a custom executor for requests- Parameters:
executor- – the Executor- Returns:
- this config builder Implementation Note: The default executor uses a thread pool, with a custom thread factory. If a security manager has been installed, the thread factory creates threads that run with an access control context that has no permissions.
-
proxy
public Config proxy(Proxy value)
Set a proxy- Parameters:
value- Proxy settings object.- Returns:
- this config object
-
proxy
public Config proxy(String host, int port)
Set a proxy- Parameters:
host- the hostname of the proxy server.port- the port of the proxy server- Returns:
- this config object
-
proxy
public Config proxy(String host, int port, String username, String password)
Set an authenticated proxy- Parameters:
host- the hostname of the proxy server.port- the port of the proxy serverusername- username for authenticated proxypassword- password for authenticated proxy- Returns:
- this config object
-
setObjectMapper
public Config setObjectMapper(ObjectMapper om)
Set the ObjectMapper implementation to use for Response to Object binding- Parameters:
om- Custom implementation of ObjectMapper interface- Returns:
- this config object
-
sslContext
public Config sslContext(SSLContext ssl)
Set a custom SSLContext.- Parameters:
ssl- the SSLContext to use for custom ssl context- Returns:
- this config object
- Throws:
UnirestConfigException- if a keystore was already configured.
-
ciphers
public Config ciphers(String... values)
Set a custom array of ciphers- Parameters:
values- the array of ciphers- Returns:
- this config object
-
protocols
public Config protocols(String... values)
Set a custom array of protocols- Parameters:
values- the array of protocols- Returns:
- this config object
-
clientCertificateStore
public Config clientCertificateStore(KeyStore store, String password)
Set a custom keystore- Parameters:
store- the keystore to use for a custom ssl contextpassword- the password for the store- Returns:
- this config object
- Throws:
UnirestConfigException- if a SSLContext was already configured.
-
clientCertificateStore
public Config clientCertificateStore(String fileLocation, String password)
Set a custom keystore via a file path. Must be a valid PKCS12 file- Parameters:
fileLocation- the path keystore to use for a custom ssl contextpassword- the password for the store- Returns:
- this config object
- Throws:
UnirestConfigException- if a SSLContext was already configured.
-
connectTimeout
public Config connectTimeout(int inMillies)
Sets the connect timeout duration for this client.In the case where a new connection needs to be established, if the connection cannot be established within the given
duration, thenHttpClient::sendthrows anHttpConnectTimeoutException, orHttpClient::sendAsynccompletes exceptionally with anHttpConnectTimeoutException. If a new connection does not need to be established, for example if a connection can be reused from a previous request, then this timeout duration has no effect.- Parameters:
inMillies- the duration to allow the underlying connection to be established- Returns:
- this builder
-
requestTimeout
public Config requestTimeout(Integer inMillies)
Sets a default timeout for all requests. If the response is not received within the specified timeout then anHttpTimeoutExceptionis thrown. completes exceptionally with anHttpTimeoutException. The effect of not setting a timeout is the same as setting an infinite Duration, ie. block forever.- Parameters:
inMillies- the timeout duration in millies- Returns:
- this builder
- Throws:
IllegalArgumentException- if the duration is non-positive
-
clearDefaultHeaders
public Config clearDefaultHeaders()
Clear default headers- Returns:
- this config object
-
setDefaultBasicAuth
public Config setDefaultBasicAuth(String username, String password)
Default basic auth credentials- Parameters:
username- the usernamepassword- the password- Returns:
- this config object
-
setDefaultHeader
public Config setDefaultHeader(String name, String value)
Set default header to appear on all requests- Parameters:
name- The name of the header.value- The value of the header.- Returns:
- this config object
-
setDefaultHeader
public Config setDefaultHeader(String name, Supplier<String> value)
Set default header to appear on all requests, value is through a Supplier This is useful for adding tracing elements to requests.- Parameters:
name- The name of the header.value- a supplier that will get called as part of the request.- Returns:
- this config object
-
addDefaultHeader
public Config addDefaultHeader(String name, String value)
Add default header to appear on all requests- Parameters:
name- The name of the header.value- The value of the header.- Returns:
- this config object
-
addDefaultCookie
public Config addDefaultCookie(String name, String value)
Adds a default cookie to be added to all requests with this config- Parameters:
name- the name of the cookievalue- the value of the cookie- Returns:
- this config object
-
addDefaultCookie
public Config addDefaultCookie(Cookie cookie)
Adds a default cookie to be added to all requests with this config- Parameters:
cookie- the cookie- Returns:
- this config object
-
instrumentWith
public Config instrumentWith(UniMetric metric)
Add a metric object for instrumentation- Parameters:
metric- a UniMetric object- Returns:
- this config object
-
interceptor
public Config interceptor(Interceptor value)
Add a Interceptor which will be called before and after the request;- Parameters:
value- The Interceptor- Returns:
- this config object
-
followRedirects
public Config followRedirects(boolean enable)
Allow the client to follow redirects. Defaults to TRUE- Parameters:
enable- The name of the header.- Returns:
- this config object
-
enableCookieManagement
public Config enableCookieManagement(boolean enable)
Allow the client to manage cookies. Defaults to TRUE- Parameters:
enable- The name of the header.- Returns:
- this config object
-
verifySsl
public Config verifySsl(boolean value)
Toggle verifying SSL/TLS certificates. Defaults to TRUE- Parameters:
value- a bool is its true or not.- Returns:
- this config object
-
useSystemProperties
public Config useSystemProperties(boolean value)
Tell the HttpClients to use the system properties for things like proxies- Parameters:
value- a bool is its true or not.- Returns:
- this config object
-
requestCompression
public Config requestCompression(boolean value)
Turn on or off requesting all content as compressed. (GZIP encoded) Default is true- Parameters:
value- a bool is its true or not.- Returns:
- this config object
-
cookieSpec
public Config cookieSpec(String policy)
Sets a cookie policy Acceptable values: 'default' (same as Netscape), 'netscape', 'ignoreCookies', 'standard' (RFC 6265 interoprability profile) , 'standard-strict' (RFC 6265 strict profile)- Parameters:
policy- : the policy for cookies to follow- Returns:
- this config object
-
cacheResponses
public Config cacheResponses(boolean value)
Enable Response Caching with default options- Parameters:
value- enable or disable response caching- Returns:
- this config object
-
cacheResponses
public Config cacheResponses(Cache.Builder value)
Enable Response Caching with custom options- Parameters:
value- enable or disable response caching- Returns:
- this config object
-
setDefaultResponseEncoding
public Config setDefaultResponseEncoding(String value)
Set the default encoding that will be used for serialization into Strings. The default-default is UTF-8- Parameters:
value- a bool is its true or not.- Returns:
- this config object
-
connectionTTL
public Config connectionTTL(long duration, TimeUnit unit)
Sets the jdk.httpclient.keepalive.timeout setting https://docs.oracle.com/en/java/javase/20/docs/api/java.net.http/module-summary.html The number of seconds to keep idle HTTP connections alive in the keep alive cache. This property applies to both HTTP/1.1 and HTTP/2.- Parameters:
duration- of ttl.unit- the time unit of the ttl- Returns:
- this config object
-
connectionTTL
public Config connectionTTL(Duration duration)
Sets the jdk.httpclient.keepalive.timeout setting https://docs.oracle.com/en/java/javase/20/docs/api/java.net.http/module-summary.html The number of seconds to keep idle HTTP connections alive in the keep alive cache. This property applies to both HTTP/1.1 and HTTP/2.- Parameters:
duration- of ttl.- Returns:
- this config object
-
retryAfter
public Config retryAfter(boolean value)
Automatically retry synchronous requests on 429/529 responses with the Retry-After response header Default is false- Parameters:
value- a bool is its true or not.- Returns:
- this config object
-
retryAfter
public Config retryAfter(boolean value, int maxRetryAttempts)
Automatically retry synchronous requests on 429/529 responses with the Retry-After response header Default is false- Parameters:
value- a bool is its true or not.maxRetryAttempts- max retry attempts- Returns:
- this config object
-
retryAfter
public Config retryAfter(RetryStrategy strategy)
Automatically retry synchronous requests on 429/529 responses with the Retry-After response header Default is false- Parameters:
strategy- a RetryStrategy- Returns:
- this config object
-
version
public Config version(HttpClient.Version value)
Requests a specific HTTP protocol version where possible. This is a direct proxy setter for the Java Http-Client that powers unirest.If this method is not invoked prior to using, then newly built clients will prefer HTTP/2.
If set to HTTP/2, then each request will attempt to upgrade to HTTP/2. If the upgrade succeeds, then the response to this request will use HTTP/2 and all subsequent requests and responses to the same origin server will use HTTP/2. If the upgrade fails, then the response will be handled using HTTP/1.1 Constraints may also affect the selection of protocol version. For example, if HTTP/2 is requested through a proxy, and if the implementation does not support this mode, then HTTP/1.1 may be used
- Parameters:
value- the requested HTTP protocol version- Returns:
- this config
-
defaultBaseUrl
public Config defaultBaseUrl(String value)
set a default base url for all routes. this is overridden if the url contains a valid base already the url may contain path params for example. Setting a default path of 'http://somwhere' and then calling Unirest with Unirest.get('/place') will result in a path of 'https://somwehre/place'- Parameters:
value- the base URL to use- Returns:
- this config object
-
getDefaultHeaders
public Headers getDefaultHeaders()
Return default headers that are added to every request- Returns:
- Headers
-
isRunning
public boolean isRunning()
Does the config have currently running clients? Find out here.- Returns:
- boolean
-
reset
public Config reset()
Shutdown the current config and re-init.- Returns:
- this config
-
reset
public void reset(boolean clearOptions)
Shut down the configuration and its clients. The config can be re-initialized with its settings- Parameters:
clearOptions- should the current non-client settings be retained.
-
getClient
public Client getClient()
Return the current Client. One will be build if it does not yet exist.- Returns:
- A synchronous Client
-
getEnabledCookieManagement
public boolean getEnabledCookieManagement()
- Returns:
- if cookie management should be enabled. default: true
-
getFollowRedirects
public boolean getFollowRedirects()
- Returns:
- if the clients should follow redirects default: true
-
getConnectionTimeout
public int getConnectionTimeout()
- Returns:
- the connection timeout in milliseconds default: 10000
-
getRequestTimeout
public Integer getRequestTimeout()
- Returns:
- the connection timeout in milliseconds default: null (infinite)
-
getKeystore
public KeyStore getKeystore()
- Returns:
- a security keystore if one has been provided
-
getKeyStorePassword
public String getKeyStorePassword()
- Returns:
- The password for the keystore if provided
-
getObjectMapper
public ObjectMapper getObjectMapper()
- Returns:
- a configured object mapper
- Throws:
UnirestException- if none has been configured.
-
getProxy
public Proxy getProxy()
- Returns:
- the configured proxy configuration
-
useSystemProperties
public boolean useSystemProperties()
- Returns:
- if the system will pick up system properties (default is false)
-
getDefaultResponseEncoding
public String getDefaultResponseEncoding()
- Returns:
- the default encoding (UTF-8 is the default default)
-
isRequestCompressionOn
public boolean isRequestCompressionOn()
- Returns:
- if request compression is on (default is true)
-
isVerifySsl
public boolean isVerifySsl()
Will unirest verify the SSL? You should only do this in non-prod environments. Default is true- Returns:
- if unirest will verify the SSL
-
getCookieSpec
public String getCookieSpec()
- Returns:
- the configured Cookie Spec
-
getMetric
public UniMetric getMetric()
- Returns:
- the currently configured UniMetric object
-
getUniInterceptor
public Interceptor getUniInterceptor()
- Returns:
- the currently configured Interceptor
-
getSslContext
public SSLContext getSslContext()
- Returns:
- the SSL connection configuration
-
getCiphers
public String[] getCiphers()
- Returns:
- the ciphers for the SSL connection configuration
-
getProtocols
public String[] getProtocols()
- Returns:
- the protocols for the SSL connection configuration
-
getDefaultBaseUrl
public String getDefaultBaseUrl()
- Returns:
- the default base URL
-
getCustomExecutor
public Executor getCustomExecutor()
-
getVersion
public HttpClient.Version getVersion()
- Returns:
- the preferred http version
-
isAutomaticRetryAfter
public boolean isAutomaticRetryAfter()
- Returns:
- if unirest will retry requests on 429/529
-
maxRetries
public int maxRetries()
- Returns:
- the max number of times to attempt to do a 429/529 retry-after
-
getTTL
public long getTTL()
- Returns:
- the maximum life span of persistent connections regardless of their expiration setting.
-
getRetryStrategy
public RetryStrategy getRetryStrategy()
-
-