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

API standards et tierces Android Discussion :

Connexion entre Android et MySQL


Sujet :

API standards et tierces Android

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut Connexion entre Android et MySQL
    Bonjour,

    Je suis débutante en développement android. J'ai essayé de connecter mon application à une base de données mysql en utilisant le tutoriel dans le lien suivant:http://www.erlem-technologies.com/fr...a-laide-de-php

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    package com.example.country;
     
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
     
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.NameValuePair;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.entity.UrlEncodedFormEntity;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.message.BasicNameValuePair;
    import org.apache.http.util.EntityUtils;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
     
    import com.example.country.R;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class Country extends Activity {
    	TextView txt;
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		LinearLayout rootLayout = new LinearLayout(getApplicationContext());  
    		txt = new TextView(getApplicationContext());  
    		rootLayout.addView(txt);  
    		setContentView(rootLayout);  
     
    		// Définir le texte et appeler la fonction de connexion.  
    		txt.setText("Connexion..."); 
    		// Appeler la méthode pour récupérer les données JSON
    		txt.setText(getServerData(strURL)); 
    	}
     
    	// Mettre l'adresse du script PHP
    	// Attention localhost ou 127.0.0.1 ne fonctionnent pas. Mettre l'adresse IP local.
    	public static final String strURL = "http:/197.28.108.48/mesRequetes/ville.php";
     
    	private String getServerData(String returnString) {
    		InputStream is = null;
    		String result = "";
    		// Envoyer la requête au script PHP.
    		// Script PHP : $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
    		// $_REQUEST['ville'] sera remplacé par L dans notre exemple.
    		// Ce qui veut dire que la requête enverra les villes commençant par la lettre L
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    		nameValuePairs.add(new BasicNameValuePair("ville","L"));
     
    		// Envoie de la commande http
    		try{
    			HttpClient httpclient = new DefaultHttpClient();
    			HttpPost httppost = new HttpPost(strURL);
    			httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    			HttpResponse response = httpclient.execute(httppost);
    			HttpEntity entity = response.getEntity();
    			is = entity.getContent();
     
    		}catch(Exception e){
    			Log.e("log_tag", "Error in http connection " + e.toString());
    		}
     
    		// Convertion de la requête en string
    		try{
     
    			BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
    			StringBuilder sb = new StringBuilder();
    			String line = null;
    			while ((line = reader.readLine()) != null) {
    				sb.append(line + "\n");
    			}
    			is.close();
    			result=sb.toString();
    		}catch(Exception e){
    			Log.e("log_tag", "Error converting result " + e.toString());
    		}
    		// Parse les données JSON
    		try{
    			JSONArray jArray = new JSONArray(result);
    			for(int i=0;i<jArray.length();i++){
    				JSONObject json_data = jArray.getJSONObject(i);
    				// Affichage ID_ville et Nom_ville dans le LogCat
    				Log.i("log_tag","ID_ville: "+json_data.getInt("ID_ville")+
    						", Nom_ville: "+json_data.getString("Nom_ville")
    				);
    				// Résultats de la requête
    				returnString += "\n\t" + jArray.getJSONObject(i); 
    			}
    		}catch(JSONException e){
    			Log.e("log_tag", "Error parsing data " + e.toString());
    		}
    		return returnString; 
    	}
        }
    Manifest:

    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
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.country"
        android:versionCode="1"
        android:versionName="1.0" >
     
        <uses-sdk android:minSdkVersion="4" />
        <uses-permission android:name="android.permission.INTERNET"/>
     
        <application
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name" >
            <activity
                android:name=".Country"
                android:label="@string/app_name" android:permission="android.permission.INTERNET">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
     
    </manifest>
    et voilà le contenu du fichier ville.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
      mysql_connect("localhost","root","");
      mysql_select_db("bdVille");
      $sql=mysql_query("select * from tblVille where Nom_ville like '".$_REQUEST['ville']."%'");
      while($row=mysql_fetch_assoc($sql))
      $output[]=$row;
      print(json_encode($output));
      mysql_close();
    ?>
    le LogCat:
    02-23 16:11:32.477: E/log_tag(257): Error in http connection java.lang.IllegalArgumentException: Host name may not be null

    02-23 16:11:32.487: E/log_tag(257): Error converting result java.lang.NullPointerException

    02-23 16:11:32.487: E/log_tag(257): Error parsing data org.json.JSONException: A JSONArray text must start with '[' at character 0 of

    Cependant, lorsque j'exécute, je ne vois toujours pas la liste des villes commençant par la lettre "L" affichée par l'émulateur, ce dernier m'affiche seulement l'URL du fichier ville.php.



    Quelqu'un peut m'aider??

    Merci d'avance

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 338
    Points : 192
    Points
    192
    Par défaut
    Si tu travail en local :
    remplace "http:/197.28.108.48/mesRequetes/ville.php"
    par "http:/10.0.0.2/mesRequetes/ville.php" c'est équivalent du 127.0.0.1 pour android

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut Connexion entre android et mysql
    J'ai mis 10.0.0.2 mais rien n'a changé

  4. #4
    Membre actif Avatar de chpil
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 143
    Points : 212
    Points
    212
    Par défaut
    C'est 10.0.2.2 qu'il faut mettre, pas 10.0.0.2 ... cf doc (sujet abordé je ne sais combien de fois sur le forum, une petite recherche aurait suffit...)

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par chpil Voir le message
    C'est 10.0.2.2 qu'il faut mettre, pas 10.0.0.2 ... cf doc (sujet abordé je ne sais combien de fois sur le forum, une petite recherche aurait suffit...)

    Même si j'ai mis 10.0.2.2, cela n'a rien changé.

    Par contre, j'ai reçu ces erreurs:
    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
    [2012-02-23 17:29:08 - country] ActivityManager: Error type 2
    [2012-02-23 17:29:08 - country] ActivityManager: Error: Unable to connect to activity manager; is the system running?
    [2012-02-23 17:29:08 - country] ActivityManager: usage: am [start|broadcast|instrument|profile]
    [2012-02-23 17:29:08 - country] ActivityManager: am start [-D] INTENT
    [2012-02-23 17:29:08 - country] ActivityManager: am broadcast INTENT
    [2012-02-23 17:29:08 - country] ActivityManager: am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>]
    [2012-02-23 17:29:08 - country] ActivityManager: [-w] <COMPONENT>
    [2012-02-23 17:29:08 - country] ActivityManager: am profile <PROCESS> [start <PROF_FILE>|stop]
    [2012-02-23 17:29:08 - country] ActivityManager: INTENT is described with:
    [2012-02-23 17:29:08 - country] ActivityManager: [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
    [2012-02-23 17:29:08 - country] ActivityManager: [-c <CATEGORY> [-c <CATEGORY>] ...]
    [2012-02-23 17:29:08 - country] ActivityManager: [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
    [2012-02-23 17:29:08 - country] ActivityManager: [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
    [2012-02-23 17:29:08 - country] ActivityManager: [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
    [2012-02-23 17:29:08 - country] ActivityManager: [-n <COMPONENT>] [-f <FLAGS>] [<URI>]

  6. #6
    Membre habitué Avatar de cad13
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 247
    Points : 197
    Points
    197
    Par défaut
    Je ne sais pas si entre temps tu as trouvé la réponse à ton soucis, mais c'est l'adresse qui n'a pas un bon format :

    au lieu de http:/197.28.108.48/mesRequetes/ville.php

    il faut que tu mettes http://197.28.108.48/mesRequetes/ville.php

    (double slash).

    L'erreur "Host name may not be null" vient d'un mauvais format d'URL (qui peut avoir des caractères spéciaux qu'il faut d'abord convertir).

Discussions similaires

  1. Poblème de connexion entre Android et MySQL
    Par amalmanel dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 25/03/2012, 09h30
  2. Problème de connexion entre Android et MySQL via les Web Services
    Par amalmanel dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 22/03/2012, 02h36
  3. Réponses: 3
    Dernier message: 24/03/2011, 13h34
  4. connexion entre java et mysql par jdbc odbc
    Par langreth dans le forum JDBC
    Réponses: 11
    Dernier message: 22/04/2008, 23h17
  5. Connexion entre Dreamweaver et Mysql
    Par hoangeric dans le forum Outils
    Réponses: 17
    Dernier message: 08/07/2006, 13h09

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