Maison >Java >javaDidacticiel >Comment définir les délais d'attente de réponse HTTP dans Android à l'aide de Java ?

Comment définir les délais d'attente de réponse HTTP dans Android à l'aide de Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-17 11:39:26331parcourir

How to Set HTTP Response Timeouts in Android Using Java?

Définition du délai d'expiration de la réponse HTTP dans Android à l'aide de Java

La possibilité de vérifier l'état de connexion d'un serveur distant est essentielle dans de nombreuses applications Android. Cependant, des délais d'attente de connexion prolongés peuvent entraîner des retards importants. Cet article explique comment définir le délai d'expiration d'une réponse HTTP pour éviter une attente inutile.

Considérez l'extrait de code suivant 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());
            ...
        }
    }
}

Lorsque le serveur est en panne pour des tests, l'exécution reste bloquée à la ligne :

HttpResponse response = httpClient.execute(method);

Pour résoudre ce problème, des délais d'attente peuvent être définis pour limiter la période d'attente. Dans l'exemple ci-dessous, deux délais d'attente sont établis :

  1. Connection Timeout : Spécifie le temps maximum autorisé pour établir une connexion avec le serveur distant. Par défaut, cette valeur est 0 (pas de délai d'attente).
  2. Socket Timeout : Définit le temps maximum autorisé pour recevoir les données du serveur distant. La valeur par défaut est également 0.
HttpGet httpGet = new HttpGet(url);
HttpParams httpParameters = new BasicHttpParams();
// Set the connection timeout in milliseconds until a connection is established.
int timeoutConnection = 3000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
// Set the default socket timeout (SO_TIMEOUT) 
// in milliseconds which is the timeout for waiting for data.
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpResponse response = httpClient.execute(httpGet);

Lorsque ce code est exécuté, une exception de connexion sera levée après 3 secondes si la connexion ne peut pas être établie, et une exception de socket sera levée après 5 secondes. secondes si aucune donnée n'est reçue du serveur.

Alternativement, si vous disposez d'une instance HTTPClient existante (par exemple, DefaultHttpClient ou AndroidHttpClient), vous pouvez utiliser la fonction setParams() pour définir ses paramètres de délai d'attente :

httpClient.setParams(httpParameters);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn