Je développe une application en utilisant la bibliothèque OkHttp et mon problème est que je ne trouve pas comment définir le délai de connexion et le délai d'expiration du socket.
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
Réponses:
Vous devez simplement le faire
Sachez que valeur définie dans
setReadTimeout
est celui utilisé danssetSoTimeout
leSocket
interne dans laOkHttp
Connection
classe.Ne pas définir de délai d'expiration sur le
OkHttpClient
équivaut à définir une valeur de0
onsetConnectTimeout
ousetReadTimeout
et n'entraînera aucun délai d'expiration du tout. La description peut être trouvée ici .Comme mentionné par @marceloquinta dans les commentaires,
setWriteTimeout
peut également être défini.À partir de la version 2.5.0, les valeurs de délai de lecture / écriture / connexion sont définies par défaut sur 10 secondes, comme indiqué par @ChristerNordvik. Cela peut être vu ici .
À partir d'OkHttp3, vous pouvez maintenant le faire via le constructeur comme ceci
Vous pouvez également consulter la recette ici .
la source
Pour okhttp3, cela a un peu changé.
Maintenant, vous configurez les heures à l'aide du générateur, et non des setters, comme ceci:
Plus d'informations peuvent être trouvées dans leur wiki: https://github.com/square/okhttp/blob/b3dcb9b1871325248fba917458658628c44ce8a3/docs/recipes.md#timeouts-kt-java
la source
Pour le retrofit Retrofit: 2.0.0-beta4, le code est le suivant
la source
Pour Retrofit 2.0.0-beta1 ou beta2, le code se présente comme suit
la source
la source
Cela a changé maintenant. Remplacer
.Builder()
par.newBuilder()
À partir de okhttp: 3.9.0, le code se présente comme suit:
la source
okhttp version:
3.11.0
ou supérieureà partir du code source okhttp
unit
peut être n'importe quelle valeur ci-dessouscode d'exemple
Actualisé
J'ai ajouté une nouvelle API à okhttp à partir de la version
3.12.0
, vous pouvez définir le délai d'expiration comme ceci:REMARQUE: cela nécessite l'API 26+, donc si vous prenez en charge les anciennes versions d'Android, continuez à l'utiliser
(5, TimeUnit.SECONDS)
.la source
ainsi:
la source
cela a fonctionné pour moi ... de https://github.com/square/okhttp/issues/3553
la source
Si vous souhaitez personnaliser la configuration, utilisez d'abord la méthodologie ci-dessous pour créer OKhttpclient, puis ajoutez un générateur par-dessus.
la source
Vous pouvez définir un délai d'expiration d'appel pour couvrir tout le cycle de résolution DNS, connexion, écriture du corps de la requête, traitement du serveur et lecture du corps de la réponse.
la source