IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

requête http asynchrone


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Points : 486
    Points
    486
    Par défaut requête http asynchrone
    Bonjour,

    Mon application effectue des requêtes http. Je les effectues de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
     try 
        {
        	HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("monURL");
    		HttpResponse response = httpclient.execute(httppost);
    		BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
    		StringBuilder sb = new StringBuilder();
    		String line = null;
    		while ((line = reader.readLine()) != null) 
    		{
    			sb.append(line + "\n");
    		}
    		return sb.toString();
        }
        catch(Exception e)
        {
            Log.i(TAG, "Error in http connection dans chargementDepartement "+e.toString());
            return "Erreur1";
        }
    Je viens de me poser la question "Ma requête est synchrone ou non?" Je pense que oui vu que quand je test sur un Androïd pendant le moment ou les requêtes sont effectué, je ne peux rien faire sur l'appli.

    J'aimerai savoir si vous savez comment définir une requête asynchrone.

  2. #2
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Bonjour,

    C'est ton exécution qui est synchrone (si tu utilises pas de threads ou autres), après pour faire quelques chose d'Asynchrone (non bloquant), tu peux utiliser "AsyncTask" http://d.android.com/reference/andro...AsyncTask.html

    Exemple rapide (non testé), pour donner une idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
        private class Requeteur extends AsyncTask<String, Void, String> {
            private ProgressDialog mDialog = new ProgressDialog(TonIHM.this);
            private String erreur;
     
            protected void onPreExecute() {
                mDialog.setMessage("Téléchargement");
                mDialog.show();
            }
     
            protected Void doInBackground(String... urls) {
                try 
                {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpPost httppost = new HttpPost(urls[0]);
                    HttpResponse response = httpclient.execute(httppost);
                    BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null)  {
                        sb.append(line + "\n");
                    }
                    return sb.toString();
                } catch(Exception e) {
                    cancel(true);            
                    erreur = e.getMessage();
                }
     
                return null;
            }
     
            protected void onPostExecute(String reponse) {
                mDialog.dismiss();
     
                if(erreur != null) {
                    // traiter erreur 
                }else {
                    // utilisation de reponse / ui refresh
                }
            }
        }
    Pour l'utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Requeteur ().execute("ton url");

  3. #3
    Membre confirmé
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Points : 486
    Points
    486
    Par défaut
    Ok merci beaucoup pour ta réponse, je vais me pencher dessus =)

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    J'aimerai savoir si vous savez comment définir une requête asynchrone.
    Tu aimerais avoir la requête asynchrone ou que ton application ne soit pas bloqué ?

    La solution que t'as donné Aerinder fait que ton application ne sera pas bloqué lors de la requête http , par contre la requête elle est synchrone est donc ton AsyncTask lui sera bloqué jusqu'à qu'il ait la réponse de la requête.

  5. #5
    Membre confirmé
    Homme Profil pro
    IUT Informatique
    Inscrit en
    Mars 2011
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : IUT Informatique

    Informations forums :
    Inscription : Mars 2011
    Messages : 412
    Points : 486
    Points
    486
    Par défaut
    Que mon application ne soit pas bloqué.

    Sa méthode à l'air de fonctionner, je vais tester sur un androïd pour voir le résultat

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Requêtes HTTP Asynchrone avec Wintellect.Threading
    Par vladvonjim dans le forum C#
    Réponses: 0
    Dernier message: 21/01/2012, 00h07
  2. multi-requètes HTTP asynchrones
    Par nds75000 dans le forum VB.NET
    Réponses: 4
    Dernier message: 27/10/2007, 22h13
  3. Intercepter les requêtes HTTP et les modifier.
    Par Alexandre T dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 21/09/2005, 19h25
  4. Requête HTTP
    Par hogan dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 15/07/2005, 18h44
  5. [HTTP]Créer une requête http multipart/related
    Par jothi35 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 05/04/2005, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo