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 :

JSON et Android


Sujet :

Android

  1. #1
    Membre régulier Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Points : 78
    Points
    78
    Par défaut JSON et Android
    Bonjour

    je suis a la recherche de tuto expliquant comment mettre en place du Json avec android pour pouvoir communiquer avec une BDD. j'ai deja trouver ces liens la mais il n'explique pas forcement http://mobilerie.blogspot.fr/2012/02...-json-php.html
    http://www.erlem-technologies.com/fr...a-laide-de-php

    je suis debutant en android et Json donc si possible des tutos bien expliquer du moins sur les plus grandes lignes.

  2. #2
    Membre régulier
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 105
    Points
    105
    Par défaut
    Le deuxième tout au moins est plutôt pas mal expliqué, après tout dépend aussi si tu connais un minimum php et la manipulation des bases de données. C'est de celui là don je me suis servie à ms débuts ainsi que d'un autre (que je n'ai pas retrouvé) mais qui disait plus ou moins tout à fait la même chose

    Ce qui peut sembler flou, c'est à quoi correspond chaque appel (httppost.setEntity, httpclient.execute etc...) ce que tu peux faire, c'est aller voir l'api org.apache.http, tu notes toutes les exceptions (ce qui déjà te permet de mieux cerner qui fait quoi) tu les traites de façon claire via un println ou un log, puis tu t'amuses à les lever l'une après l'autre (adresse bidon, erreur dans une requête etc.. ) c'est un peu long mais ça te permettra de bien comprendre tout le déroulement de l'opération et de décider comment toi tu interviens.

    Voilà ce que je peux t'en dire, mais attention, ce n'est que ma propre compréhension et elle peut être imparfaite, aussi, utilise là plus comme une base que comme la vérité absolue

    Tu prépares les valeurs dont tu as besoin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ArrayList<NameValuePair> VALUE_PAIRE = new ArrayList<NameValuePair>();
    VALUE_PAIRE.add(new BasicNameValuePair("id", "1974");
    VALUE_PAIRE.add(new BasicNameValuePair("pseudo", "Aligator427");
    // ce sont les valeurs dont tu vas avoir besoin dans ta requête en BDD
     
    String STRURL = "http://monadressserveur.chezouam/repertoire1/repertoire2/nomdemonscript.php";
    // l'url de ton script
    ensuite grâce à cette manip, tu prépares ta requête http (entend par là, le fait de tenter de te connecter et de passer les valeurs de VALUE_PAIRE et non pas une requête en base de donnée.):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // en gros va te permettre de transmettre ta requête http
    HttpClient httpclient = new DefaultHttpClient();
     
    // met en forme ta requête et vérifie sa validité(c'est une interprétation simplifiée, hein ^^)
    HttpPost httppost = new HttpPost(STRURL);
    httppost.setEntity(new UrlEncodedFormEntity(VALUE_PAIRE)); 
     
    // récupère la réponse... (c'est là que je suis pas très forte oO )
    HttpResponse response = httpclient.execute(httppost);
    Là, ton script (touché grâce à l'url) va récupérer les valeurs que tu lui envoies:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $monId = $_REQUEST['id'];
    //(enfin bien sur, avec tous les tests qui vont bien, if isset et compagnie...)
    il fait une ou plein de requête en BDD (ou autre traitement, après tout tu peux faire ce que tu veux, comme écrire dans un fichier ou je ne sais quoi )

    et il répond à ton application comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $outputsql[] = array ( 'uneclef'=> 'unevaleur',
                          'uneautreclef' => 'uneautrevaleur');
    print(json_encode($outputsql));
    Ta réponse est revenue (yeah!! c'est déjà bien )
    Tu récupères le flux et tu le lis:

    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
     
    // récupération du flux
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();	
     
    //lecture
    // attention à l'encodage, mets celui que tu veux, sachant que sauf erreur de ma part Json utilise utf_8 par défaut... (vérifie auprès des pros ;) )
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); 
    StringBuilder sb = new StringBuilder();
    String s = null;
    while ((s = reader.readLine()) != null) {
        sb.append(s + "\n"); 
    }
    is.close();
     
    // préparation de ton outil Json
    String resultat = sb.toString();
    JSONArray jArray = new JSONArray(resultat);
     
    JSONObject json = acces.jArray.getJSONObject(0);
    et pour utiliser tes valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    json.getString("uneclef"); // getInt, etc...
    Attention, j'ai retiré les blocs try/catch pour plus de lisibilité... je te déconseille donc de reprendre ce code tel quel


    Voilà, j'espère t'avoir aidé. Sinon précise ce que tu ne comprends pas ?

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Juste une petite remarque pour "lire le flux de retour", ne pas réinventer la roue....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // récupération du flux
    HttpEntity entity = response.getEntity();
    // préparation de ton outil Json
    String resultat = EntityUtils.toString(entity);
    JSONArray jArray = new JSONArray(resultat);
     
    JSONObject json = acces.jArray.getJSONObject(0);
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Membre régulier
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 105
    Points
    105
    Par défaut
    Ah oui, magnifique merci Nicroman

    C'est toujours le problème des tutos et d'ailleurs des conseils en général que l'on peut donner sur un forum... il faut toujours se dire que c'est une façon de faire (ici celle que j'emploie et qui marche) mais que ce n'est pas pour autant "LA" façon..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EntityUtils.toString(entity);
    j'adore, je note !!

    ps : tu crois qu'il faut que je l'édite dans mon post directement?

  5. #5
    Membre régulier Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Points : 78
    Points
    78
    Par défaut
    merci pour ces réponse bien expliquer je vais étudier ça et reviendrai vers vous si jamais je me retrouve coincé

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Attention aussi:

    Un des tutoriel est vraiment catastrophique....
    Entre la gestion d'erreur dans le vent, et l'utilisation de HttpClient dans le thread principal (reservé à l'UI) il fait un peu se dresser les cheveux sur la tête.

    Penser à utiliser AsyncTask et/ou un Loader, au lieu de coller le code directement dans une fonction de l'UI.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre régulier Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Points : 78
    Points
    78
    Par défaut
    Citation Envoyé par CrikTeCroque Voir le message

    Tu prépares les valeurs dont tu as besoin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ArrayList<NameValuePair> VALUE_PAIRE = new ArrayList<NameValuePair>();
    VALUE_PAIRE.add(new BasicNameValuePair("id", "1974");
    VALUE_PAIRE.add(new BasicNameValuePair("pseudo", "Aligator427");
    // ce sont les valeurs dont tu vas avoir besoin dans ta requête en BDD
     
    String STRURL = "http://monadressserveur.chezouam/repertoire1/repertoire2/nomdemonscript.php";
    // l'url de ton script
    suis je vraiment obliger de faire ça imaginons que j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    String monLogin = editText.gettext().tostring();
    je peut trés bien envoyer monLogin plutot que de faire des Arraylist non ?

  8. #8
    Membre régulier
    Femme Profil pro
    Développeur Java
    Inscrit en
    Août 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Août 2013
    Messages : 61
    Points : 105
    Points
    105
    Par défaut
    Tout dépend de ce que tu veux faire, mais pour passer des valeurs dans ta requête, mieux vaut conserver une forme clef/valeur, c'est plus lisible et plus sûr.

  9. #9
    Membre régulier Avatar de devdeb91
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2013
    Messages : 246
    Points : 78
    Points
    78
    Par défaut
    alors j'ai un probleme c'est au niveau de l'adresse ip je sais que l'emulateur a son propre réseau du coup je sais pas comment faire pour le faire aller chercher le fichier sur mon pc. ma config est wamp donc phpmyadmin et mysql installer ainsi que apache donc voila j'attend vos réponse car je suis perdu avec ceci

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

Discussions similaires

  1. JSON Parsing android
    Par pascal B dans le forum Android
    Réponses: 2
    Dernier message: 08/03/2014, 21h58
  2. Base de données SQLiteManager ou JSON + PHP + Android
    Par othman22222 dans le forum Android
    Réponses: 1
    Dernier message: 16/07/2012, 04h52
  3. PHP array to json to android Spinner
    Par monta007 dans le forum Composants graphiques
    Réponses: 2
    Dernier message: 20/04/2011, 11h13

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