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 :

UnknownHostException lors de la connexion à une BDD


Sujet :

API standards et tierces Android

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 25
    Points : 17
    Points
    17
    Par défaut UnknownHostException lors de la connexion à une BDD
    Bonjour,

    Je souhaite pouvoir me connecter à ma bdd mysql que j'ai créé sur 000webhost via mon téléphone. Pour cela j'ai essayé de faire comme cela est recommandé un peu partout et notamment ici http://www.erlem-technologies.com/fr...a-laide-de-php, c'est à dire utiliser une page php comme intermédiaire.

    Le problème comme l'indique le titre c'est qu'après avoir adapté le code du site au dessus au mien et avoir crée la page php lors du test (sur mon propre appareil) j'obtiens toujours l'erreur "Error in http connection UnknownHostException" à ce moment précis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpResponse response = httpclient.execute(httppost);
    J'ai essayé toutes les méthodes que j'ai pu trouver sur google pour régler ce problème et malheureusement rien ne change.

    Ensuite pour être sur que le problème ne vient pas de mon code j'ai repris le code exact du lien cité au dessus, en reprenant la bdd et en changeant l'url par celle où j'ai hébergé le php "http://bddtest.comoj.com/ville.php" (comme vous le voyez ça fonctionne sur navigateur) mais le résultat est le même, toujours l'erreur "UnknownHostException" du coup là je désespère.



    Une idée de la provenance du soucis?

    Merci

    Edit : Résolu en utilisant une AsyncTask

  2. #2
    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
    Ouais enfin, attention... le tutoriel en question est une catastrophe coté android....

    * Appels réseau dans le thread UI => plantage obligatoire si android >3.0 et interdit de toute manière.
    * Gestion catastrophique des exceptions dans getServerData
    * Méconnaissance du framework et de ses classes utiitaires (EntityUtils par exemple).
    ...
    Regarder dans le forum, il y a plein de code "corrigés" (ainsi que dans les tutoriels android).


    Et sans le code *exact* que tu utilises... difficile d'y voir plus clair...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 25
    Points : 17
    Points
    17
    Par défaut
    Oui comme je l'ai dit dans mon post principal l'erreur venait de la requête dans le thread principal, d'ailleurs c'est étrange car après avoir testé sur l'emulateur j'ai bien un NetworkOnMainThreadException au lieu de l’exception du titre

    Et pour le code j'ai repris exactement exactement celui du tutoriel, voilà la solution, ce n'est pas le plus optimisé mais ça fonctionne
    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    package com.exemple.ville;
     
    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.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.LinearLayout;
    import android.widget.TextView;
     
    public class ville 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
    		new task().execute();
    	}
     
    	// Mettre l'adresse du script PHP
    	public static final String strURL = "http://bddtest.comoj.com/ville.php";
     
    	class task extends AsyncTask<String, String, Void>{
    		InputStream is = null;
    		String result = "";
                   String success = "false";
    	       @Override
    		protected Void doInBackground(String... params) {
    	    	   InputStream is = null;
     
    	   		// 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","Lille"));
     
    	   		// 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();
    	   			Log.e("pass 1", "connection success ");
    	   		}catch(Exception e){
    	   			Log.e("Fail 1", 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();
    	   			Log.e("pass 2", "connection success ");
    	   		}catch(Exception e){
    	   			Log.e("Fail 2", e.toString());
    	   		}
     
    	   		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("Fail 3", e.toString());
    			}
    	   		return null;
    		}
    		protected void onPostExecute(Void v) {
     
    			 txt.setText(returnString); 
     
     
    		}
    	}
     
     
    }
    Et j'ai lu d'autres tutos et aucun ne parlait de ce problème de thread, ou alors je n'ai regardé que des vieux tutos. :/

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

Discussions similaires

  1. Erreur syntaxique lors d'une connexion à une bdd
    Par Une.Personne dans le forum Caml
    Réponses: 3
    Dernier message: 24/12/2013, 07h58
  2. Problème lors de l'implémentation d'une connexion à une BDD
    Par Gwyrrd dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/12/2011, 13h49
  3. connexion à une bdd mysql en asp
    Par asetti dans le forum ASP
    Réponses: 3
    Dernier message: 31/10/2005, 18h31
  4. [Applet][MySQL] connexion à une BDD
    Par Michel38 dans le forum JDBC
    Réponses: 19
    Dernier message: 20/07/2005, 14h59
  5. Erreur de connexion à une BDD SQL Server 2000 avec BDE
    Par SchpatziBreizh dans le forum Bases de données
    Réponses: 3
    Dernier message: 17/06/2005, 11h22

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