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 BDD erreur


Sujet :

API standards et tierces 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 Connexion BDD erreur
    Bonjour

    alors voila j'ai fait un code pour ce connecter via un fichier php a ma BDD mais lorsque j'utilise cette persmission

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <uses-permission 
            android:name="android.permission.ACCESS_NETWORK_STATE" />
    il me sort en erreur de log cat un connexion refused to http://192.168.1.x

    et lorsque je change la permission en ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <uses-permission 
            android:name="android.permission.INTERNET" />
    il me sort android.os.NetworkOnMainThread.

    pour le deuxieme je sais que il faut un asynctask mais le premier je ne comprend pas pourquoi cette erreur

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    NetworkOnMainThread => résultat de la mauvaise pratique consistant à faire un appel réseau sur le thread principal.
    Merci de passer cet appel dans un Thread à part (ou une AsyncTask, par exemple).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    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
    et pour la premiere erreur ?

  4. #4
    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
    Le réseau 192.168.1.x n'existe qu'en WiFi pour un vrai device.
    (d'ailleurs j'espère que ce n'est pas vraiment x, et tu peux laisser la vraie valeur, c'est une adresse privée, donc non routable, donc non joignable par autre chose que par le réseau local).

    Entre un émulateur et la machine hôte il existe un réseau virtuel: 10.0.2.0/24, la machine "hôte" étant en 10.0.2.2

    android.permission.ACCESS_NETWORK_STATE
    Donne la permission à l'application de savoir dans quel état est le réseau du device (connecté, à qui, comment). Aucunement à accéder à ce réseau.

    android.permission.INTERNET
    Donne la permission à l'application d'accéder à Internet. c'est à dire à autre chose qu'à lui-même en utilisant des protocoles de données TCP ou UDP.


    Pour le NetworkOnMainThreadException, Hizin a déjà parfaitement répondu, tout opération "longue" (et donc par exemple lecture d'un fichier, appel internet, etc...) devrait être effectué par un thread différent du thread principal. Le plus simple étant de passer par les AsyncTask pour ce faire.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  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
    bon bah alors je passe par un thread mais un probleme s'oppose a moi

    d'abord voici le code de la fonction de connexion
    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
    public int connecter(EditText login, EditText password){
     
    		String monLogin = "";
    		String monPass = "";
     
    		String returnString = "0";
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    		nameValuePairs.add(new BasicNameValuePair(monLogin, login.getText().toString()));
    		nameValuePairs.add(new BasicNameValuePair(monPass, password.getText().toString()));
     
    		InputStream is = null;
    		String result = "";
     
    		HttpResponse response = null;
     
    		try {
     
    			HttpClient client = new DefaultHttpClient();
    			HttpPost post = new HttpPost("http://192.168.1.34/connexion.php");
    			post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    			response = client.execute(post);
    			HttpEntity entity = response.getEntity();
    			is = entity.getContent();
     
    		} catch (Exception e) {
    			// TODO: handle exception
    			Log.e("log_tag", "Erreur de connexion " + e.toString());
    		}
     
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"),8 );
    			//StringBuilder sb = new StringBuilder();
    			String line = null;
     
    			while((line = reader.readLine()) != null)
    				returnString = line;
    			is.close();
    		} catch (Exception e) {
    			// TODO: handle exception
    			Log.e("log_tag", "Error converting result " + e.toString());
    		}
     
    		int i = Integer.parseInt(returnString);
     
    		return i;
     
    	}
    maintenant voici le thread
    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
    seConnecter.setOnClickListener(new View.OnClickListener() {
     
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				int i;
    				Thread connect = new Thread(){
    					public void run(){
    						try{
    							i = connecter(login, password);
    						}catch(InterruptedException e){
    							e.printStackTrace();
    						}finally{
    							if (i == 1) {
    								Intent ouvrirActivy = new Intent("com.example.dvp.MAINACTIVITY");
    								startActivity(ouvrirActivy);
    							}
    							else {
    								affichage.setText("id incorrect");
    							}
    						}
    					}
    				};
    				connect.start();
    alors le int i ne vas pas car il n'est pas final mais lorsque je le passe en final il ne vas pas aussi car il ne peu pas changé de valeur alors comment faire pour contourner ça

  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
    le problème s'oppose ?

    Voir les tutoriels présentés ici devrait t'aider... je pense en particulier à une forcément (http://nicroman.developpez.com/tutor...id/exceptions/) qui décrit une fonction ... un peu similaire.

    1. La fonction "connecter" ne renvoie aucune information (en tous cas, elle n'est pas prévue pour en renvoyer vu sa déclaration) concernant les echecs éventuels (réseau non disponible, erreur de login/password, etc...). Cela me semble étrange (voir le tutoriel ci-dessus pour la raison).

    2. La fonction "connecter" prend en paramètres des EditText... hors leur seule utilisation est dans la transformation EditText=>String... Il me semble donc plus judicieux que la fonction prenne en paramètre des String (voire des CharSequence) et sera ainsi réutilisable en plusieurs endroits.

    3. La fonction "connecter" utilise des Log (logcat) pour les erreurs, c'est très bien, (revoir la gestion des exceptions, tutoriel précédent encore), sauf que la syntaxe n'est pas bonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.e("log_tag", "Erreur de connexion " + e.toString());
    doit impérativement être remplacé par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Log.e("log_tag", "Erreur de connexion ",e);
    (avec "log_tag" par un truc plus explicite....genre "connexion" ?)

    4. La fonction "connecter" réinvente la roue, sans en utiliser toutes les possibilités, et ne gère pas la fermeture de ressources (InputStream, Reader). Le code suivant suffit à tout décoder.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost("http://192.168.1.34/connexion.php");
    post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    response = client.execute(post);
    HttpEntity entity = response.getEntity();
    String strResponse = EntityUtils.toString(strResponse);
    Integer.parseInt(strResponse);

    5. Si on parlait de AsyncTask, c'est justement parcequ'avec un "Thread" c'est compliqué... Le Thread ne peut pas faire de startActivity par exemple, ni aucune action liée à l'UI (comme la lecture des EditText, ou le setText d'un TextView): il faut gérer les messages de retour au thread principal, chose faite automatiquement avec un AsyncTask.
    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
     
    class LoginTask extends AsyncTask<String,Void,Integer>
    {
         public Integer doInBackground(String ... params)
         {
              if (params == null || params.length != 2) throw new IllegalArguementException("Invalid arguements passed to LoginTask: should be login,password");
              String login = params[0];
              String password = params[1];
              return Integer.valueOf(connecter(login,password));
         }
     
         public void onPostExecute(Integer result)
         {
              if (result != null && result.intValue() == 1) {
                  Intent ouvrirActivy = new Intent("com.example.dvp.MAINACTIVITY");
                  MyActivity.this.startActivity(ouvrirActivy);  // <= MyActivity étant le nom de la classe englobante
              } else {
                  MyActivity.this.affichage.setText("id incorrect"); // <= ce n'est pas vrai... si le réseau est down ?
              }
         }
    }
     
     
    seConnecter.setOnClickListener(new View.OnClickListener() {
     			@Override
    			public void onClick(View v) {
                                 LoginTask task = new LoginTask ();
                                 task.execute(login.getText().toString(),password.getText().toString());
                            }
    });
    Bon après il y a d'autres questions... la fonction de login renvoie 1 ou 0 si j'ai bien compris... mais comment fait le web-service pour authentifier l'utilisateur par la suite ? il faudrait au moins une sorte de "token" pour cela.
    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
    je vais voir et creuser sur votre réponse.

    j'ai voulu passer par un thread car les tutos sur le async task sont pas forcement nombreux et le concepte est compréhensible mais dur a mettre en place.

    je reviendrai vers vous pour toute difficulté merci

  8. #8
    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
    Honnêtement, par les threads c'est encore pire (d'autant qu'il faut rajouter la notion de Handler sinon cela ne marche pas). Et pire que tout, ça risque d'être plus lent ^^
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  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 en regardant le code et ton tuto j'ai pu comprendre le postexecute mais il reste une zone d'ombre sur ton code et le doinbackground.

    pourrais tu m'expliqué a peu prés ?

    et aussi pour le AsyncTask faut t'il ouvrir une nouvelle class ? ( je pense que oui mais pas sur )

    ps: désolé si j'en demande beaucoup mais j'ai du mal a vraiment bien intégrer cette methode.

  10. #10
    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
    Pour l'AsyncTask c'est simple... doInBackground comme son nom l'indique est effectué dans un thread à part en background... onPostExecute est appelé (après que doInBackground ait fini) avec le résultat dans le thread principal.

    je ne suis pas sur de comprendre la question sur le classes... "ouvrir une classe" n'ayant pas de sens pour moi.

    En tous cas, vu qu'on référence l'activité directement en tant que "this" il faut que ce soit obligatoirement une classe "interne" (inner class) de l'activité.
    Et vu que tu manipules un Thread et des Listeners (ce qui est encore pire puisque ce sont des classes internes anonymes) j'imagine que le principe ne t'es pas inconnu.
    Si ce n'est pas le cas, je te suggères rapidement d'ouvrir un livre sur le Java "en général" (ou lire ici les superbes cours sur le sujet).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  11. #11
    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
    je ne connaissais pas du tout les inner class en regardant sur internet tout m'est apparue plus clair dérriere je voyais mal le AsyncTask mais celle ci est tout simplement une class avec des methodes.

    du coup je pense que je vais procéder comme ça :

    1. mon activité
    2. mon asinctask
    3. appel des methode HttpPost
    4. appel du doinbackground
    5. appel du postexecute

  12. #12
    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 toujours l'erreur de os.android.NetworkOnMainThreadException

    alors que mon code est me semble t'il comme vous l'avez spécifier

    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
    package com.example.dvp;
    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 com.example.dvp.R;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
     
     
    public class Demarrage extends Activity {
     
    	Button seConnecter;
    	EditText password;
    	EditText login;
    	TextView affichage;
     
    	public int connecter(String login, String password){
     
    		String monLogin = "";
    		String monPass = "";
     
    		//String returnString = "0";
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    		nameValuePairs.add(new BasicNameValuePair(monLogin, login));
    		nameValuePairs.add(new BasicNameValuePair(monPass, password));
     
    		//InputStream is = null;
    		//String result = "";
     
    		HttpResponse response = null;
    		int i = 0;
     
    		try {
     
    			HttpClient client = new DefaultHttpClient();
    			HttpPost post = new HttpPost("http://192.168.1.34/connexion.php");
    			post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    			response = client.execute(post);
    			HttpEntity entity = response.getEntity();
    			String strResponse = EntityUtils.toString(entity);
    			i = Integer.parseInt(strResponse);
     
    		} catch (Exception e) {
    			// TODO: handle exception
    			Log.e("log_tag", "Erreur de connexion " + e.toString());
    		}
     
    		return i;
     
    	}
     
    	class LoginTask extends AsyncTask<String,Void,Integer>
    	{
    	     public Integer doInBackground(String ... params)
    	     {
    	          if (params == null || params.length != 2) throw new IllegalArgumentException("Invalid arguements passed to LoginTask: should be login,password");
    	          String login = params[0];
    	          String password = params[1];
    	          return Integer.valueOf(connecter(login,password));
    	     }
     
    	     public void onPostExecute(Integer result)
    	     {
    	          if (result != null && result.intValue() == 1) {
    	              Intent ouvrirActivy = new Intent("com.example.dvp.MAINACTIVITY");
    	              Demarrage.this.startActivity(ouvrirActivy);  // <= MyActivity étant le nom de la classe englobante
    	          } else {
    	              Demarrage.this.affichage.setText("id incorrect"); // <= ce n'est pas vrai... si le réseau est down ?
    	          }
    	     }
    	}
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.demarrage);
    		seConnecter = (Button) findViewById(R.id.bConnect);
    		password = (EditText) findViewById(R.id.etPass);
    		login = (EditText) findViewById(R.id.etLog);
    		affichage = (TextView) findViewById(R.id.tvTest);
     
    		seConnecter.setOnClickListener(new View.OnClickListener() {
     
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				int result;
    				LoginTask task = new LoginTask();
    				result = task.doInBackground(login.getText().toString(), password.getText().toString());
    				task.onPostExecute(result);
    			}
    		});
     
    	}
     
     
     
     
    }

  13. #13
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    result = task.doInBackground(login.getText().toString(), password.getText().toString());
    				task.onPostExecute(result);
    Est fait automatiquement (et correctement) par l'AsyncTask (c'est tout le but d'ailleurs)...
    Remplacer par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    task.execute(login.getText().toString(), password.getText().toString());
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  14. #14
    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
    bon ça passe mieux a part qu'il me sors ceci

    09-23 10:24:09.157: E/log_tag(540): Erreur de connexion java.lang.NumberFormatException: Invalid int: "0 "
    d'aprés les resultats sur google cela viens d'un parametre de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public Integer doInBackground(String ... params)
    mais pas plus d'info qui me permet de le résoudre j'ai changer tout int en Integer pensant que cela pouvais avoir un rapport mais rien donc je vais poursuivre mes recherches si jamais vous comprennez pourquoi je suis preneur

  15. #15
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Quand tu as une stacktrace, prends l'habitude de toujours la donner en entier.
    Pourrais-tu donc nous donner le reste de celle-ci, avec la ligne pointée par l'erreur, ainsi que le code permettant de situer le contexte de cette ligne s'il te plaît ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  16. #16
    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
    euh bah le reste du logcat est ceci
    09-23 11:11:28.777: D/dalvikvm(600): GC_FOR_ALLOC freed 69K, 2% free 14335K/14599K, paused 41ms
    09-23 11:11:28.777: I/dalvikvm-heap(600): Grow heap (frag case) to 14.425MB for 376436-byte allocation
    09-23 11:11:28.807: D/dalvikvm(600): GC_FOR_ALLOC freed 1K, 2% free 14701K/14983K, paused 31ms
    09-23 11:11:29.027: D/gralloc_goldfish(600): Emulator without GPU emulation detected.
    09-23 11:11:45.217: E/log_tag(600): Erreur de connexion java.lang.NumberFormatException: Invalid int: "0 "
    voila c'est tout se que j'ai

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Il est possible que Integer.parseInt(str) ne fonctionne pas si la chaine de caractère que tu lui donne ne correspond pas à une valeur entière.
    D'après la StackTrace, la chaine de caractères a pour valeur "0 " et pas "0".
    Le problème vient peutêtre de là.

  18. #18
    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
    trim avant


    Mais quelque chose me dit que c'est le code php qui rajoute un retour chariot inutile.
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  19. #19
    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
    bon bah avec le trim() ça passe mieux.

    donc voici le code final si vous trouvez des remarques a faire n'hésité pas
    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
    119
    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 com.example.dvp.R;
     
    import android.app.Activity;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
     
     
    public class Demarrage extends Activity {
     
    	Button seConnecter;
    	EditText password;
    	EditText login;
    	TextView affichage;
     
    	public Integer connecter(String login, String password){
     
    		String monLogin = "";
    		String monPass = "";
     
    		//String returnString = "0";
    		ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    		nameValuePairs.add(new BasicNameValuePair(monLogin, login));
    		nameValuePairs.add(new BasicNameValuePair(monPass, password));
     
    		//InputStream is = null;
    		//String result = "";
     
    		HttpResponse response = null;
    		Integer i = 0;
     
    		try {
     
    			HttpClient client = new DefaultHttpClient();
    			HttpPost post = new HttpPost("http://192.168.1.34/connexion.php");
    			//affichage.setText("connextion");
    			post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    			response = client.execute(post);
    			HttpEntity entity = response.getEntity();
    			String strResponse = EntityUtils.toString(entity);
    			strResponse = strResponse.trim();
    			//affichage.setText("la chaine est " + strResponse);
    			i = Integer.parseInt(strResponse);
    			//affichage.setText("" + i); //affiche tu text
     
    		} catch (Exception e) {
    			// TODO: handle exception
    			//Log.e("log_tag", "Erreur de connexion " + e.toString());
    			Log.e("log_tag", "Erreur de connexion ",e);
    		}
     
    		return i;
     
    	}
     
    	class LoginTask extends AsyncTask<String,Void,Integer>
    	{
    	     public Integer doInBackground(String ... params)
    	     {
    	          if (params == null || params.length != 2) throw new IllegalArgumentException("Invalid arguements passed to LoginTask: should be login,password");
    	          String login = params[0];
    	          String password = params[1];
    	          return Integer.valueOf(connecter(login,password));
    	     }
     
    	     public void onPostExecute(Integer result)
    	     {
    	          if (result != null && result.intValue() == 1) {
    	              Intent ouvrirActivy = new Intent("com.example.dvp.MAINACTIVITY");
    	              Demarrage.this.startActivity(ouvrirActivy);  // <= MyActivity étant le nom de la classe englobante
    	          } else {
    	              Demarrage.this.affichage.setText("id incorrect"); // <= ce n'est pas vrai... si le réseau est down ?
    	          }
    	     }
    	}
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.demarrage);
    		seConnecter = (Button) findViewById(R.id.bConnect);
    		password = (EditText) findViewById(R.id.etPass);
    		login = (EditText) findViewById(R.id.etLog);
    		affichage = (TextView) findViewById(R.id.tvTest);
     
    		seConnecter.setOnClickListener(new View.OnClickListener() {
     
    			@Override
    			public void onClick(View v) {
    				// TODO Auto-generated method stub
    				//int result;
    				LoginTask task = new LoginTask();
    				task.execute(login.getText().toString(), password.getText().toString());
    			}
    		});
     
    	}
     
     
     
     
    }
    je pense qu'il y a une erreur quelque part mais je ne trouve pas encore

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    je pense qu'il y a une erreur quelque part
    Ah bon, tu penses qu'il y en a ? Tu as un message d'erreur ou non ? (toujours la même question)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [WB18] Connexion BDD + Erreur redirection
    Par Benduroy dans le forum WebDev
    Réponses: 0
    Dernier message: 05/05/2014, 10h09
  2. Erreur connexion BDD Oracle
    Par sam-sam dans le forum Bases de données
    Réponses: 0
    Dernier message: 03/12/2010, 13h50
  3. Connexion BDD MySql, erreur dll Mysql.Data.CF
    Par mustardpimp dans le forum Windows Mobile
    Réponses: 6
    Dernier message: 16/02/2010, 14h46
  4. Erreur connexion bdd access
    Par offspring dans le forum C#
    Réponses: 9
    Dernier message: 12/07/2008, 01h15
  5. [BDD] Erreur dans la connexion à une base MySQL
    Par dodo10 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/01/2005, 19h52

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