Você simplesmente tem que fazer isso
OkHttpClient client = new OkHttpClient();
client.setConnectTimeout(15, TimeUnit.SECONDS); // connect timeout
client.setReadTimeout(15, TimeUnit.SECONDS); // socket timeout
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Esteja ciente de que valor definido no setReadTimeout
é o utilizado em setSoTimeout
na Socket
internamente na OkHttp
Connection
classe.
Não definir nenhum tempo limite no OkHttpClient
é o equivalente a definir um valor de 0
on setConnectTimeout
ou setReadTimeout
e resultará em nenhum tempo limite. A descrição pode ser encontrada aqui .
Como mencionado por @marceloquinta nos comentários setWriteTimeout
também pode ser definido.
A partir da versão 2.5.0, os valores de tempo limite de leitura / gravação / conexão são definidos para 10 segundos por padrão, conforme mencionado por @ChristerNordvik. Isso pode ser visto aqui .
A partir do OkHttp3, agora é possível fazer isso através do Builder da seguinte maneira
client = new OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS)
.build();
Você também pode ver a receita aqui .