Estou desenvolvendo um aplicativo usando a biblioteca OkHttp e meu problema é que não consigo encontrar como definir o tempo limite da conexão e o tempo limite do soquete.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Respostas:
Você simplesmente tem que fazer isso
Esteja ciente de que valor definido no
setReadTimeout
é o utilizado emsetSoTimeout
naSocket
internamente naOkHttp
Connection
classe.Não definir nenhum tempo limite no
OkHttpClient
é o equivalente a definir um valor de0
onsetConnectTimeout
ousetReadTimeout
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
Você também pode ver a receita aqui .
fonte
Para okhttp3, isso mudou um pouco.
Agora você configura os horários usando o construtor, e não os configuradores, assim:
Mais informações podem ser encontradas em seu wiki: https://github.com/square/okhttp/blob/b3dcb9b1871325248fba917458658628c44ce8a3/docs/recipes.md#timeouts-kt-java
fonte
Para Retrofit retrofit: 2.0.0-beta4, o código é o seguinte
fonte
Para o Retrofit 2.0.0-beta1 ou beta2, o código é o seguinte
fonte
fonte
Isso mudou agora. Substitua
.Builder()
por.newBuilder()
A partir do okhttp: 3.9.0, o código é o seguinte:
fonte
okhttp versão:
3.11.0
ou superiordo código fonte okhttp
unit
pode ser qualquer valor abaixocódigo de exemplo
Atualizada
Eu adicionei uma nova API ao okhttp da versão
3.12.0
, você pode definir o tempo limite da seguinte forma:NOTA: Isso requer a API 26+; portanto, se você suporta versões mais antigas do Android, continue usando
(5, TimeUnit.SECONDS)
.fonte
igual a:
fonte
isso funcionou para mim ... de https://github.com/square/okhttp/issues/3553
fonte
Se você deseja personalizar a configuração, use a metodologia abaixo para criar o OKhttpclient primeiro e, em seguida, adicione o construtor sobre ele.
fonte
Você pode definir um tempo limite de chamada para cobrir todo o ciclo, desde a resolução do DNS, conexão, gravação do corpo da solicitação, processamento do servidor e leitura do corpo da resposta.
fonte