open class OkHttpClient : Cloneable, Call.Factory, WebSocket.Factory
Factory for calls, which can be used to send HTTP requests and read their responses.
OkHttp performs best when you create a single OkHttpClient instance and reuse it for all of
your HTTP calls. This is because each client holds its own connection pool and thread pools.
Reusing connections and threads reduces latency and saves memory. Conversely, creating a client
for each request wastes resources on idle pools.
Use new OkHttpClient() to create a shared instance with the default settings:
// The singleton HTTP client.
public final OkHttpClient client = new OkHttpClient();
Or use new OkHttpClient.Builder() to create a shared instance with custom settings:
// The singleton HTTP client.
public final OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new HttpLoggingInterceptor())
.cache(new Cache(cacheDir, cacheSize))
.build();
You can customize a shared OkHttpClient instance with newBuilder. This builds a client that shares the same connection pool, thread pools, and configuration. Use the builder methods to configure the derived client for a specific purpose.
This example shows a call with a short 500 millisecond timeout:
OkHttpClient eagerClient = client.newBuilder()
.readTimeout(500, TimeUnit.MILLISECONDS)
.build();
Response response = eagerClient.newCall(request).execute();
The threads and connections that are held will be released automatically if they remain idle. But if you are writing a application that needs to aggressively release unused resources you may do so.
Shutdown the dispatcher's executor service with shutdown(). This will also cause future calls to the client to be rejected.
client.dispatcher().executorService().shutdown();
Clear the connection pool with evictAll(). Note that the connection pool's daemon thread may not exit immediately.
client.connectionPool().evictAll();
If your client has a cache, call close(). Note that it is an error to create calls against a cache that is closed, and doing so will cause the call to crash.
client.cache().close();
OkHttp also uses daemon threads for HTTP/2 connections. These will exit automatically if they remain idle.
class Builder |
OkHttpClient() |
open fun authenticator(): Authenticator |
|
open fun cache(): Cache? |
|
open fun callTimeoutMillis(): Int
Default call timeout (in milliseconds). By default there is no timeout for complete calls, but there is for the connect, write, and read actions within a call. |
|
open fun certificatePinner(): CertificatePinner |
|
open fun connectionPool(): ConnectionPool |
|
open fun connectionSpecs(): List<ConnectionSpec> |
|
open fun connectTimeoutMillis(): Int
Default connect timeout (in milliseconds). The default is 10 seconds. |
|
open fun cookieJar(): CookieJar |
|
open fun dispatcher(): Dispatcher |
|
open fun dns(): Dns |
|
open fun eventListenerFactory(): EventListener.Factory |
|
open fun followRedirects(): Boolean |
|
open fun followSslRedirects(): Boolean |
|
open fun hostnameVerifier(): HostnameVerifier |
|
open fun interceptors(): List<Interceptor>
Returns an immutable list of interceptors that observe the full span of each call: from before the connection is established (if any) until after the response source is selected (either the origin server, cache, or both). |
|
open fun networkInterceptors(): List<Interceptor>
Returns an immutable list of interceptors that observe a single network request and response. These interceptors must call Interceptor.Chain.proceed exactly once: it is an error for a network interceptor to short-circuit or repeat a network request. |
|
open fun newBuilder(): OkHttpClient.Builder |
|
open fun newCall(request: Request): Call
Prepares the request to be executed at some point in the future. |
|
open fun newWebSocket(request: Request, listener: WebSocketListener): WebSocket
Uses request to connect a new web socket. |
|
open fun pingIntervalMillis(): Int
Web socket and HTTP/2 ping interval (in milliseconds). By default pings are not sent. |
|
open fun protocols(): List<Protocol> |
|
open fun proxy(): Proxy? |
|
open fun proxyAuthenticator(): Authenticator |
|
open fun proxySelector(): ProxySelector |
|
open fun readTimeoutMillis(): Int
Default read timeout (in milliseconds). The default is 10 seconds. |
|
open fun retryOnConnectionFailure(): Boolean |
|
open fun socketFactory(): SocketFactory |
|
open fun sslSocketFactory(): SSLSocketFactory |
|
open fun writeTimeoutMillis(): Int
Default write timeout (in milliseconds). The default is 10 seconds. |