J'ai créé la fonction suivante pour vérifier l'état de la connexion:
private void checkConnectionStatus() {
HttpClient httpClient = new DefaultHttpClient();
try {
String url = "http://xxx.xxx.xxx.xxx:8000/GaitLink/"
+ strSessionString + "/ConnectionStatus";
Log.d("phobos", "performing get " + url);
HttpGet method = new HttpGet(new URI(url));
HttpResponse response = httpClient.execute(method);
if (response != null) {
String result = getResponse(response.getEntity());
...
Quand j'arrête le serveur pour tester l'exécution attend longtemps sur la ligne
HttpResponse response = httpClient.execute(method);
Est-ce que quelqu'un sait comment régler le délai afin d'éviter d'attendre trop longtemps?
Merci!
java
android
timeout
httpresponse
Niko Gamulin
la source
la source
Pour définir des paramètres sur le client:
J'ai utilisé cela avec succès sur JellyBean, mais devrait également fonctionner pour les anciennes plates-formes ....
HTH
la source
Si vous utilisez la bibliothèque client http de Jakarta, vous pouvez faire quelque chose comme:
la source
Si vous utilisez le client http par défaut, voici comment le faire en utilisant les paramètres http par défaut:
Le crédit d'origine va à http://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/
la source
Pour ceux qui disent que la réponse de @ kuester2000 ne fonctionne pas, sachez que les demandes HTTP, essayez d'abord de trouver l'IP hôte avec une demande DNS, puis faites la demande HTTP réelle au serveur, vous devrez donc peut-être également définir un délai d'expiration de la demande DNS.
Si votre code a fonctionné sans le délai d'expiration de la demande DNS, c'est parce que vous êtes en mesure d'atteindre un serveur DNS ou que vous atteignez le cache DNS Android. À propos, vous pouvez vider ce cache en redémarrant l'appareil.
Ce code étend la réponse d'origine pour inclure une recherche DNS manuelle avec un délai d'expiration personnalisé:
Méthode utilisée:
Cette classe provient de ce billet de blog . Allez vérifier les remarques si vous allez l'utiliser.
la source
la source
vous pouvez créer une instance HttpClient en passant avec Httpclient-android-4.3.5, cela peut bien fonctionner.
la source
Une option consiste à utiliser le client OkHttp , de Square.
Ajouter la dépendance de bibliothèque
Dans le build.gradle, incluez cette ligne:
Où se
x.x.x
trouve la version de bibliothèque souhaitée.Définissez le client
Par exemple, si vous souhaitez définir un délai d'expiration de 60 secondes, procédez comme suit:
ps: Si votre version minSdk est supérieure à 8, vous pouvez utiliser
TimeUnit.MINUTES
. Ainsi, vous pouvez simplement utiliser:Pour plus de détails sur les unités, voir TimeUnit .
la source
Si vous utilisez le
HttpURLConnection
, appelezsetConnectTimeout()
comme décrit ici :la source
la source