Exeption catch toujours executé

- - Dernière réponse : KX
Messages postés
15857
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2018
- 10 sept. 2017 à 17:57
Bonjour,


Sur android je m’expérimente a faire une connexion avec une bdd via php (Serveur avec xampp sur mon pc)

Avec ce code (Voir http://codes-sources.commentcamarche.net/faq/10789-connecter-une-application-android-a-une-base-de-donnees ) :
Button button;
        final TextView erreurtxt = (TextView) findViewById(R.id.erreur);
        button = (Button) findViewById(R.id.register);
 
         
        button.setOnClickListener(
 
                new View.OnClickListener() {
                    public void onClick(View v) {
                        erreurtxt.setText("");
                        String result = "";
                        EditText pseudo = (EditText)findViewById(R.id.pseudo);
                        String vpseudo = pseudo.getText().toString();
                        EditText mail = (EditText)findViewById(R.id.mail);
                        String vmail = mail.getText().toString();
                        EditText mdp = (EditText)findViewById(R.id.mdp);
                        String vmdp = mdp.getText().toString();
 
                        ArrayList<NameValuePair> valeurs = new ArrayList<NameValuePair>();
                        valeurs.add(new BasicNameValuePair("pseudo",vpseudo));
                        valeurs.add(new BasicNameValuePair("mail",vmail));
                        valeurs.add(new BasicNameValuePair("mdp",vmdp));
 
                        try{
                            HttpClient httpclient = new DefaultHttpClient();
                            HttpPost httppost = new HttpPost("http://192.168.1.16/android/register.php");
                            httppost.setEntity(new UrlEncodedFormEntity(valeurs));
                            HttpResponse response = httpclient.execute(httppost);
                            HttpEntity entity = response.getEntity();
                            InputStream is = entity.getContent();
                        }catch(Exception e){
                            erreurtxt.setText("Erreur de connexion au serveur");
                        }
 
                    }
                }
        );



J'ai à chaque fois le message d'erreur dans catch.

Pourtant mon pc (Avec le serveur d'allumé) est connecté au même wifi que mon mobile.

Quelle pourrait être mon erreur ?

Merci
Afficher la suite 

Votre réponse

2 réponses

Messages postés
15857
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2018
0
Merci
Bonjour,

Pour en savoir plus sur ton erreur il faut l'afficher...

catch(Exception e) {
    e.printStackTrace();
    erreurtxt.setText("Erreur de connexion au serveur: "+e);
}
Commenter la réponse de KX
0
Merci
J'ai: org.JSONexception: value test of type
Donc je suppose que cela veux dire que test n'est pas un array ?
Donc mon problème est résolu presque résolu, merci
KX
Messages postés
15857
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2018
-
A priori il t'en manque un bout, les infos les plus intéressantes sont derrière.

Exemple : org.json.JSONException: Value test of type java.lang.String cannot be converted to JSONObject

Par contre je ne vois pas où dans ton code tu utilises des fonctionnalités de JSON, il faudrait regarder la stack trace pour connaître la ligne où ça plante exactement.
> KX
Messages postés
15857
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2018
-
"Par contre je ne vois pas où dans ton code tu utilises des fonctionnalités de JSON, il faudrait regarder la stack trace pour connaître la ligne où ça plante exactement"
Entre temps j'ai fais des ajouts, c'est pour ça
> KX
Messages postés
15857
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2018
-
Re,

J'ai une erreur: org.JSONexception: No value for response
Avec en code de détection json:
String result = sb.toString();
            jObj = new JSONObject(result);

            String resultat = jObj.getJSONObject("response").getString("ok");
            if(resultat == "0"){
                erreurtxt.setText("REUSSI !");
            } else {
                erreurtxt.setText(resultat);
            }

La page php qui va avec:
<?php
include 'bdd.php';
if(isset($_POST['pseudo']) AND isset($_POST['mail']) AND isset($_POST['mdp'])) {
$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];
$mdp = sha1($_POST['mdp']);
$req = $bdd->prepare('INSERT INTO joueurs(pseudo, mail, mdp) VALUES(:pseudo, :mail, :mdp)');
$req->execute(array('pseudo' => $pseudo, 'mail' => $mail, 'mdp' => $mdp));
$response['ok'] = "0";
} else {
	$response['ok'] = "Tout les champs sont obligatoires.";
}
print_r(json_encode($response));
?>


Je débute dans se domaine.

Merci :)
KX
Messages postés
15857
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 décembre 2018
> ZauSucre -
Je ne connais pas la programmation Android ni le PHP mais je dirais que quand tu fais
getJSONObject("response")
il ne trouve pas la valeur de "response".

Il faudrait que tu affiches ton String result pour savoir à quoi il ressemble et quelles sont les valeurs que tu peux récupérer dedans.
Commenter la réponse de ZauSucre

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.