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 :

[Volley] Envoi d'une requete POST avec retour Json : pb envoi parametre POST


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut [Volley] Envoi d'une requete POST avec retour Json : pb envoi parametre POST
    Bonjour,
    mon appli envoie, avec Volley une requete sur mon serveur local et en reçoit le JSON.
    Tout se passe bien
    Je pousse le truc un peu plus, et j'attends, coté php, une valeur dans $_POST["token"].
    J'ai donc rajouter la section getParams par rapport à mon code original, mais le serveur ne reçoit jamais la valeur du POST.
    Voici le code :
    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 void onClickShow(View v)  //Test avec Volley
        {
            Log.d("XX","ON Click !!");
            JsonObjectRequest jsOR=new JsonObjectRequest(Request.Method.POST,
                    getURL,new Response.Listener<JSONObject>() {
            @Override
            public void onResponse(JSONObject response) {
                Log.d("XX","On recoit des infos !!");
                Log.d("XX",response.toString());
                try {
                    JSONArray maladies= response.getJSONArray("Maladies");
                    for (int i=0;i<maladies.length();i++)
                    {
                        Log.d("XX","Json "+i);
                        JSONObject maladie=maladies.getJSONObject(i);
                        String leNom=maladie.getString("Nom");
                        Log.d("XX","Ajout de "+leNom);
                        //On developpe et on stocke pour chaque objet
                        //
                        //tvResult.append(leNom+"\n");
     
                    }
                    //Fin des recherches
     
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("XX",error.getMessage());
            }
        })//test
            {
                @Override
                protected Map<String, String> getParams() {
                    Map<String,String> params=new HashMap<String,String>();
                    params.put("token","38");
                    return params;
                }
            }
            //fin test
            ;
            requestQueue.add(jsOR);
        }//Fin onclick
    Avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     RequestQueue requestQueue;
    TextView tvResult;
    et dans le oncreate de mon activity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    requestQueue= Volley.newRequestQueue(getApplicationContext());
    Quand je passe par Postman (qui émule une requete sur le serveur), avec le POST initialisé, j'ai bien la réponse attendu par le script php.
    Je ne comprends pas, où, dans ma méthode (trouvé sur plusieurs sites), je me plante !!

    Merci de votre aide.
    Cordialement,
    Guillaume C.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Bon, je me répond à moi même, j'ai trouvé une solution, mais qui n'est pas celle attendue réellement (autre méthode), donc je ne met pas le post en résolu.
    J'ai arrêté d'utiliser le JsonObjectRequest, car tout ce que j'ai put trouvé sur StackOverflow notamment n'a strictement rien donné, et comme d'autre part dans cette même activité, le passage de valeur dans post fonctionnait avec le StringRequest, j'ai géré le Json à la mimine....
    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
           public void onClickShow(View v)  //Test avec Volley
           {
               StringRequest request=new StringRequest(Request.Method.POST, getURL, new Response.Listener<String>() {
                   @Override
                   public void onResponse(String response) {
                       Log.d("XX",response);
                       //On recoit la réponse en string facon json. Il faut maintenant la décrypter
                        try
                        {
                            JSONObject jsReponse=new JSONObject(response);
                            try
                            {
                                JSONArray jsonInfo=jsReponse.getJSONArray("Infos");
                                for (int i=0;i<jsonMaladies.length();i++)
                                {
                                    Log.d("XX","Json "+i);
                                    JSONObject maladie=jsonInfo.getJSONObject(i);
                                    String leNom=maladie.getString("Nom");    
                                    Log.d("XX","Ajout de "+leNom);
                                    tvResult.append(leNom+"\n");
     
                                }
                                tvResult.append("----\n");
                            }
                            catch (JSONException e)
                            {
                                 Log.e("XX","Erreur JSON Array"+e);
                                //TODO : Gérer les erreurs au niveau utilisateur
                            }
                        }
                        catch (JSONException e)
                       {
                           Log.e("XX","Erreur JSON Response"+e);
                       }
                   }
               }, new Response.ErrorListener() {
                   @Override
                   public void onErrorResponse(VolleyError error) {
                       NetworkResponse networkRepsonse=error.networkResponse;
                       if(networkRepsonse.statusCode==401)
                       {
                           Log.d("XX", "Erreur récupération authentification");
                           Toast.makeText(getApplicationContext(),"Erreur dans la récupération",Toast.LENGTH_SHORT).show();
                       }
                       if(networkRepsonse.statusCode==404)
                       {
                           Log.d("XX", "Erreur aucune données");
                           Toast.makeText(getApplicationContext(),"Aucune donnée",Toast.LENGTH_SHORT).show();
                       }
                   }
               }){
                   @Override
                   protected Map<String,String> getParams() throws AuthFailureError {
                       Map<String,String> parameters =new HashMap<String,String>();
                       parameters.put("token","38");
                       return parameters;
                   }
               };
               requestQueue.add(request);
           }

Discussions similaires

  1. Réponses: 1
    Dernier message: 31/05/2016, 17h31
  2. CURL - Requete POST avec retour JSON
    Par MissJuju dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 04/05/2015, 11h58
  3. envois d'une requet post en mod_plsql
    Par lastrecrue dans le forum PL/SQL
    Réponses: 2
    Dernier message: 23/01/2009, 14h48
  4. effectuer une requete insert avec 'values' ET 'select'
    Par delaio dans le forum Bases de données
    Réponses: 4
    Dernier message: 15/08/2004, 19h05
  5. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37

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