Exeption catch toujours executé

Signaler
-
Messages postés
16336
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 mai 2021
-
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

2 réponses

Messages postés
16336
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 mai 2021
118
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);
}
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
Messages postés
16336
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 mai 2021
118
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.
>
Messages postés
16336
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 mai 2021

"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
>
Messages postés
16336
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 mai 2021

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 :)
Messages postés
16336
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
14 mai 2021
118 > 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.