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
Libérer: 2024-12-17 11:39:26
original
242 Les gens l'ont consulté

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());
            ...
        }
    }
}
Copier après la connexion

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

HttpResponse response = httpClient.execute(method);
Copier après la connexion

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);
Copier après la connexion

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);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal