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à.
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
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
-
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.javapackage 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...."); } }