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

Android Discussion :

Connexion impossible webservice PHP Android App


Sujet :

Android

  1. #1
    Invité
    Invité(e)
    Par défaut Connexion impossible webservice PHP Android App
    Bonjour. Je sollicite votre aide car je dois terminer mon projet de fin d'études qui repose sur une application Android (enquête de satisfaction).

    L'application est terminée mais non fonctionnelle puisque lorsque je renseigne les identifiants issus du webservice PHP pour connecter à cette application en Android, cela me marque "veuillez vérifier vos identifiants".

    Or, lorsque la base de données semble connectée au serveur Xampp (sous Windows 10) mais ne relaie pas à mon app (construite avec Android Studio, en Java + XML).

    Pour résumer, la page de connexion MainActivity (avec email et mot de passe) doit renvoyer vers la page d'accueil (si identifiants corrects) et l'utilisateur peut remplir les questionnaires de satisfaction.

    Mais sans connexion, rien n'est fonctionnel.

    LA PAGE MainActivity.java

    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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private Button SeConnecter;
        private TextView YourEmail, YourPassword;
        private EditText MyEmail, MyPassword;
        private ImageView imgAlstom;
        private static Candidat candidatConnecte = null;
     
        public static void setCandidatConnecte (Candidat unCandidat)
        {
            candidatConnecte = unCandidat;
        }
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
     
            this.MyEmail = (EditText) findViewById(R.id.idMail);
            this.MyPassword = (EditText) findViewById(R.id.idPassword);
            this.YourEmail = (TextView) findViewById(R.id.textView13);
            this.YourPassword = (TextView) findViewById(R.id.textView16);
            this.imgAlstom = (ImageView) findViewById(R.id.idAlstomMain);
     
            // Construction du bouton suivant
            this.SeConnecter = (Button) findViewById(R.id.idSeConnecter);
            //rendre le bouton Se Connecter ecoutable
            this.SeConnecter.setOnClickListener(this);
        }
     
        @Override
        public void onClick(View v) {
     
     
            if(v.getId() == R.id.idSeConnecter){
                // Si clic sur le bouton SeConnecter
                String mail = this.YourEmail.getText().toString();
                String password = this.YourPassword.getText().toString();
                // renvoi des données
     
                //instancier un candidat
                Candidat unCandidat = new Candidat(mail, password);
                //verification de la presence du candidat en base
                Connexion uneConnexion = new Connexion();
                //lancement de la tache asynchrone avec le candidat qui se connecte
                uneConnexion.execute(unCandidat);
     
                //verification de la connexion
                if (candidatConnecte == null )
                {
                    Toast.makeText(this, "Veuillez vérifier vos identifiants",
                            Toast.LENGTH_LONG).show();
                    // (Context context, CharSequence text, int duration)
                    this.YourEmail.setText("");
                    this.YourPassword.setText("");
                }else
                 {
                    Toast.makeText(this, "Bienvenue "+candidatConnecte.getNom(),
                            Toast.LENGTH_LONG).show();
     
                    Intent unIntent = new Intent(this, Menu.class);
                /* putExtra = récupérer les valeurs de la page MainActivity
                    alstom
                    pour les retrouver dans la page Menu
                */
                    unIntent.putExtra("idCandidat", candidatConnecte.getIdcandidat()+"");
                    unIntent.putExtra("nom", unCandidat.getNom());
                    unIntent.putExtra("prenom", unCandidat.getPrenom());
                    this.startActivity(unIntent);
                }
            }
        }
    }
     
    /*************** Tache asynchrone ********************/
    /* 3 parametres : entrée, progression, sortie
      elle recoit un candidat (email et mdp) et renvoie
     * un candidat avec tous les données s'il est présent
     * sinon renvoie null.
     */
     
    class Connexion extends AsyncTask<Candidat,Void, Candidat>
    {
        //tache de fond: executée en arrière-plan.
        @Override
        protected Candidat doInBackground(Candidat... candidats) {
            Candidat candidatBDD = null;
            Candidat candidatTest = candidats[0]; //premier parametre(NOM/PRENOM)
            String url = "http://localhost/Cfa_Insta/mysurveyalstom/verifConnexion.php";
            String resultatJson ="";
            //construction de l'URL
            url += "?nom="+candidatTest.getNom()+"&prenom="+candidatTest.getPrenom();
            try{
                //instanciation la classe URL pour la page php webservice
                URL uneUrl = new URL(url);
                //ouverture du client HTTP
                HttpURLConnection uneConnexion = (HttpURLConnection) uneUrl.openConnection();
                //parametrage de la connexion
                uneConnexion.setRequestMethod("GET");
                uneConnexion.setDoInput(true);
                uneConnexion.setDoOutput(true);
                //on fixe le temps d'attente
                uneConnexion.setConnectTimeout(20000);
                // 2 secondes
                uneConnexion.setReadTimeout(15000);
                // 1,5 seconde
                //etablissement de la connexion
                uneConnexion.connect();
     
                //lecture des donnees JSON Résultats à partir de la page PHP
                InputStreamReader isr = new InputStreamReader(uneConnexion.getInputStream(), "UTF-8");
                //la lecture de la page se fait dans un buffer : memoire tompon
                BufferedReader br = new BufferedReader(isr);
                //instanciation d'une chaine de caractères dynamique
                StringBuilder sb = new StringBuilder();
                String ligne ="";
                //lecture des chaines contenues dans la page
                while ((ligne = br.readLine())!=null)
                {
                    sb.append(ligne);
                }
                resultatJson = sb.toString(); //resultat des chaines lues
                isr.close();
                br.close();
                Log.e("JSON : ", resultatJson);
            }
            catch(Exception exp){
                Log.e("Erreur : ", "Erreur de connexion à url :"+url);
                exp.printStackTrace();
            }
     
            //extraire le contenu JSON en un candidat
            try{
                JSONArray tabJson = new JSONArray(resultatJson);
                //un seul resultat JSON: personne connectee
                JSONObject unObjet = tabJson.getJSONObject(0);
                candidatBDD = new Candidat (
                        unObjet.getInt("idcandidat"),
                        unObjet.getString("nom"), unObjet.getString("prenom"),
                        unObjet.getString("metier"),
                        candidatTest.getMail(), candidatTest.getPassword(),
                        unObjet.getString("lieu"), unObjet.getString("anciennete"),
                        unObjet.getString("lesReponses")
                );
                Log.e("Candidat: ", candidatBDD.toString());
            }
            catch(JSONException exp){
                Log.e("Erreur Json : ", "Impossible de parser le json");
            }
     
     
            return candidatBDD;
        }
     
        @Override
        protected void onPostExecute(Candidat candidat) {
            /*
            le resultat de la tache asynchrone : candidatBDD va valoriser
            le candidat connecte de la classe MainActivity
             */
            MainActivity.setCandidatConnecte(candidat);
        }
    }

    ET LA PAGE verifConnexion.php

    Code php : 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
    <?php
        require_once("modele.class.php");
     
        $unModele = new Modele ();
     
        if (isset($_REQUEST['email']) && isset($_REQUEST['mdp']))
        {
            $unResultat = $unModele->verifConnexion($_REQUEST['email'],$_REQUEST['mdp']);
     
            $ligne ['email'] = $unResultat['email']; 
            $ligne ['mdp'] = $unResultat['mdp'];
     
            $tab[]  = $ligne;
     
            print(json_encode($tab));
     
        }
        else {
            print("[]");
        }
     
    ?>


    Merci par avance pour votre aide.
    Dernière modification par Invité ; 19/04/2021 à 22h18. Motif: Coloration syntaxique [CODE=php] … [/CODE]

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Bonjour,
    commence par t'aider toi même en faisant le minimum de debuggage qu'on ne peut pas faire pour toi.

    Quel retour http ?
    Quelle erreur http ?
    Tu interroge l'url http://localhost/Cfa_Insta/mysurveya...fConnexion.php ... Ca ne peut pas fonctionner.
    localhost sur un téléphone => voudrais dire que tu as un serveur web qui tourne
    localhost sur un emulateur => pointe dans l'emulateur et pas ton serveur de dev
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par grunk Voir le message
    Bonjour,
    commence par t'aider toi même en faisant le minimum de debuggage qu'on ne peut pas faire pour toi.

    Quel retour http ?
    Quelle erreur http ?
    Tu interroge l'url http://localhost/Cfa_Insta/mysurveya...fConnexion.php ... Ca ne peut pas fonctionner.
    localhost sur un téléphone => voudrais dire que tu as un serveur web qui tourne
    localhost sur un emulateur => pointe dans l'emulateur et pas ton serveur de dev

    Salut,

    Salut, le webservice n'est pas hébergé puisqu'il doit me permettre de lier la base de données à mon application, ce qui était le cas auparavant puisque je pouvais me connecter sans problème.

    Elle est en local, c'est un problème ?

    Elle s'ouvre au moyen d'un émulateur (Android Studio) et je suis censé me connecter à l'application à la suite des identifiants enregistrés en local depuis le webservice.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Donc quand tu as appel http://localhost depuis un emulateur tu essais d'accéder au localhost de ton emulateur et pas le localhost de la machine hote.
    Il est donc normale que ta requête n'aboutit à rien ce que tu devrais être en mesure de voir en regardant ce que retourne le client http.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Invité
    Invité(e)
    Par défaut
    Grosso modo, c'est ça.

    Comment dois-je m'y prendre puisque la connexion marchait auparavant ?

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    La connexion n'a jamais pu marcher avec une url en localhost et un emulateur , c'est techniquement impossible.

    Pour qu'un emulateur accède au PC hote il faut utiliser l'adresse : 10.0.2.2 et non localhost
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Connexion impossible depuis PHP
    Par supermallain dans le forum Informix
    Réponses: 3
    Dernier message: 22/03/2016, 15h35
  2. [PostgreSQL] connexion impossible entre php et postresql
    Par thor76160 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/05/2011, 17h56
  3. [PostgreSQL] Connexion à PostGres via PHP impossible à partir du serveur web mais pas en ligne de commande
    Par finition dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/05/2010, 13h47
  4. Connexion impossible entre php & mysql
    Par LDDL dans le forum Administration
    Réponses: 2
    Dernier message: 16/03/2010, 17h08
  5. [MySQL] connexion impossible de php à mysql via mysql_connect("")
    Par jrosenzw dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/02/2009, 17h07

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