Aller au contenu

Encore des difficultés pour envoyer et récupérer du JSON


Recommended Posts

Bonjours à tous.

En tant que bizut en dev Android, je me casse la tête sur de l'envoi du JSON vers un serveur depuis plusieurs heures sans trop savoir ce que je fais.

J'ai trouvé de nombreux codes pour envoyer du JSON et en recevoir en retour (ce dont j'ai besoin), mais aucun d'eux ne fonctionne ou du moins je ne comprends pas pourquoi je ne reçois rien d'intéressant.

Du coup, j'ai quelques questions :

  • Est-il nécessaire de passer par des threads pour effectuer des envois ?
  • Faut-il passer par une Map ou un JSONObject suffit pour envoyer les données ?
  • Quel est l'intéret de passer une StringEntity ? Pas possible d'envoyer un JSON directement ?
  • Comment récupérer le résultat en format String ou JSONObject quand je reçois un HttpResponse ? En faisant le getEntity().getContent() je suis censé retrouver le résultat ?

Je suis un peu perdu car je n'ai pas le controle sur le serveur, il s'agit de réutiliser un code déjà fonctionnel pour une version iPhone.

Voici le code pour mon envoi / reception :

Thread t = new Thread(){
       public void run() {
               Looper.prepare(); //For Preparing Message Pool for the child Thread
               HttpClient client = new DefaultHttpClient();
               HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
               HttpResponse response;
               JSONObject json = new JSONObject();
               try{
                   HttpPost post = new HttpPost("monUrl");
                   json.put("param1", "value1");
                   json.put("param2", "value2");
                   StringEntity se = new StringEntity("JSON: " + json.toString());  
                   se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                   post.setEntity(se);
                   response = client.execute(post);
                   /*Checking response */
                   if(response!=null){
                       InputStream in = response.getEntity().getContent(); //Get the data in the entity
                       Log.i("Reponse", ""+response.getEntity().getContentLength());
                   }
               }
               catch(Exception e){
                   e.printStackTrace();
               }
               Looper.loop(); //Loop in the message queue
           }
       };
       t.start();      

Merci d'avance si vous pouvez m'éclairer, la doc ne m'a pour l'instant pas beaucoup aidé, ni les autres topics sur le sujet sur le net ou sur ce forum

Lien vers le commentaire
Partager sur d’autres sites

Solution trouvée, en fait comme un naze je ne passais pas de valeur en POST, je ne faisais qu'envoyer le JSON, du coup le traitement PHP ne pouvait rien comprendre.

http://wiki.frandroid.com/wiki/Requête_HTTP_POST

En ajoutant la liste des parametres, ca va tout de suite mieux ;)

Mais j'aimerais bien savoir si le fait de passer par un thread est nécessaire ou pas ?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...