Probleme de récupération de mon JSON dans mon java

Résolu
Bonjour,

En effet jais crée un page php pour récupérer toutes les villes de ma base de donnée. ce qui fonctionne tres bien. Maintenant je met mon tableau qui contient les villes dans mon json.

Et jai des difficulté pour récupérer ce tableau dans mon code java. Quand je met les Toast pour savoir si jentre dans tous mes try si dessous. je me rend compte que je mon code renvoie une Exception au niveau du try qui contient les requetes http. Je ne sais vraiment pas quoi faire. voici le code php et mon code java. merci déjà.

<?php
$db_user="root";
$db_pass="";
$db_host="localhost";
$db_name="house_finder";
$mysqli = new mysqli($db_host,$db_user,$db_pass,$db_name);
if(mysqli_connect_errno()){
print("Connect failed: %s\n". mysqli_connect_error());
exit();
}
$mysqli->query("SET NAMES 'utf8'");
$sql="SELECT * FROM villes";
$result= $mysqli->query($sql);
while($e=mysqli_fetch_assoc($result)){
$output[]=$e;
}

print(json_encode($output));
$mysqli->close();

?>

sa c le code php et le nom du fichier est recupVille.php. il permet de renvoyer toutes les villes de ma base de données

Le code java est endesous

9 réponses

  1. jai reussi en utilisant une classe async, jai deja un tableau contenant les villes. maintenant je n'arrive pas a remplir dans mon Spinner. voici mon code

    la classe ajoutBail.java
    package com.example.tantine1.housefindpro;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by Tantine1 on 4/28/2016.
     */
    public class ajoutBail extends AppCompatActivity {
    
        //     définition de la variable de l'id du bayeur
        private String idBayeur;
        private Spinner spin_type, spin_ville;
        //private static final String URLV = "http://192.168.10.113:80/client/recupVille.php";
    
        private String data;
        List<String> list1 = new ArrayList<String>();
        //declation test
        InputStream is;
        String result = null;
        String line = null;
        HttpResponse response;
        BufferedReader reader;
    
    
        Spinner spinner_ville;
    
    
        void spinner_fn(String[] ville) {
            Log.i("AjoutBail", ville.toString());
            ArrayAdapter<String> dataAdapter1 = new ArrayAdapter<String>(ajoutBail.this, R.layout.support_simple_spinner_dropdown_item, ville);
            spinner_ville.setAdapter(dataAdapter1);
            spin_ville.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                    spin_ville.setSelection(position);
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> parent) {
    
                }
            });
        }
    
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.ajoutbail);
    
            spinner_ville = (Spinner) findViewById(R.id.spin_ville);
    
            Toast.makeText(getApplicationContext(), "avant le try dans ajout ", Toast.LENGTH_LONG).show();
    
    
              NomDeLaVille nV= (NomDeLaVille) new NomDeLaVille(this).execute((Void[]) null);
    
            // Toast.makeText(getApplicationContext()," test de is "+is.toString(),Toast.LENGTH_LONG).show();
    
           /* try{
    
                 reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                Log.e("CA","apres le reader");
                StringBuilder sb = new StringBuilder();
                Toast.makeText(this,"Result : "+result,Toast.LENGTH_LONG).show();
                while ((line = reader.readLine()) != null) {
    
                    sb.append(line+"\n");
                }
                is.close();
               // result=sb.toString();
                if(result == null)
                    Log.i("RESULT", "Result == null");
                else
                    Log.i("RESULT", "Result n'est pas null, c'est donc un problème sur le PHP");
            }catch (Exception e){
                e.getMessage();
               Log.i("Invalid"," buffered error "+e+" Result : "+line   );
            }
            try{
                JSONArray JA = new JSONArray(result);
                JSONObject json=null;
                ville = new String[JA.length()];
                for(int i=0;i<JA.length();i++){
                    json = JA.getJSONObject(i);
                    ville[i]=json.getString("nom_ville");
                }
                Toast.makeText(getApplicationContext(),"sss",Toast.LENGTH_LONG).show();
              /*  for(int i=0;i<ville.length;i++){
                    list1.add(ville[i]);
                }
                Toast.makeText(getApplicationContext(),"len",Toast.LENGTH_LONG).show();
                spinner_fn();
            }catch (Exception e){
                Log.e("Fail 3 ",e.toString());
            }*/
    
    
        }
    
    
    }


    voici la lcasse asynchrone
    NomDeLaVille.java
    package com.example.tantine1.housefindpro;
    
    import android.os.AsyncTask;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.Spinner;
    import android.widget.Toast;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONArray;
    import org.json.JSONObject;
    
    import java.io.BufferedReader;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by Tantine1 on 5/10/2016.
     */
    class NomDeLaVille extends AsyncTask<Void, Void, Boolean>
    {
        String[] ville;
        Spinner spin_vill;
    
        List<String> list1 = new ArrayList<String>();
        JSONObject json = null;
    
        protected ajoutBail activity ;
    
        public NomDeLaVille(AppCompatActivity activ)
        {
    
            this.activity = (ajoutBail) activ;
        }
    
        @Override
        protected Boolean doInBackground(Void... params)
        {
            //Ton code permettant l'appel à ton webservice ici
            HttpResponse response = null;
            InputStream is = null;
            String result = null;
    
            //Envoi de la requête HTTP, et réception de la réponse
            try
            {
              //  Log.i("Info","Connetion");
                HttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost("http://192.168.1.2:80/client/recupVille.php");
                response = httpClient.execute(httpPost);
    
                HttpEntity entity = response.getEntity();
                is = entity.getContent();
            }
            catch (Exception e)
            {
                Log.i("CATCH 1","Erreur : " + e.getMessage());
                return false;
            }
    
            //Conversion en String (au format JSON)
            try
            {
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                StringBuilder sb = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null)
                {
    
                    sb.append(line+"\n");
                }
                is.close();
                result=sb.toString();
                // Log.i("CATCH 1","Result : "+result.equals("nom_ville"));
            }
            catch (Exception e)
            {
                Log.i("CATCH 2","Erreur : " + e.getMessage());
                return false;
            }
    
            //Lecture de ton String (format JSON)
            try
            {
                JSONArray JA = new JSONArray(result);
    
                ville = new String[JA.length()];
    
                for(int i = 0; i < JA.length(); i++)
                {
                    json = JA.getJSONObject(i);
    
                    list1.add(json.getString("nom_ville"));
                    ville[i] = json.getString("nom_ville");
                    Log.i("Ville ",json.getString("nom_ville"));
                }
    
    
    
                // Toast.makeText(getApplicationContext(),"len",Toast.LENGTH_LONG).show();
                //  spinner_fn();
            }
            catch (Exception e)
            {
                Log.i("CATCH 3","Erreur : " + e.getMessage());
            }
    
            return true;
        }
    
        @Override
        protected void onPostExecute(Boolean result)
        {
            if(result)
            {
                Log.i("TAG",ville.toString());
                //Mis à jour de la liste
    
                activity.spinner_fn(ville);
            }
            else
                Log.i("TAG","Ca ne fonctionnne pas....");
        }
    
    
    
    }
    
    0
    1. Modérateur
      Si c'est un autre problème (je n'ai pas lu le code), merci d'ouvrir une nouvelle discussion et de mettre celle-ci en résolu si c'est le cas.
      0