marco_cheech Posté(e) 25 mai 2016 Share Posté(e) 25 mai 2016 Bonjour, Novice en programmation Android, je cherche à lire des données sur une base de données externes MySQL, mais j'ai une erreur lors de la lecture de celles-ci.. J'ai cette erreur dans le logcat : 05-25 09:31:59.107 2325-4890/com.example.petotmarc.cftcfranche_comte E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 Process: com.example.petotmarc.cftcfranche_comte, PID: 2325 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:309) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.json.JSONObject.toString()' on a null object reference at com.example.petotmarc.cftcfranche_comte.ArticleActivity$LoadAllArticles.doInBackground(ArticleActivity.java:145) at com.example.petotmarc.cftcfranche_comte.ArticleActivity$LoadAllArticles.doInBackground(ArticleActivity.java:120) at android.os.AsyncTask$2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Voici mon code : public class ArticleActivity extends ListActivity { // Progress Dialog private ProgressDialog pDialog; // Creating JSON Parser object JSONParser jParser = new JSONParser(); ArrayList<HashMap<String, String>> articlesList; // url to get all products list private static String url_all_article = "http://10.0.2.2/GestionArticle/getAllArticle.php"; // JSON Node names private static final String TAG_SUCCESS = "success"; private static final String TAG_ARTICLES = "articles"; private static final String TAG_ID = "idArticle"; private static final String TAG_TITRE = "titre"; private static final String TAG_DATEARTICLE = "dateArticle"; private static final String TAG_HEUREARTICLE = "heureArticle"; // products JSONArray JSONArray articles = null; @[member=override] protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_article); if (android.os.Build.VERSION.SDK_INT > 9) { StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); System.out.println("*** My thread is now configured to allow connection"); } //Hashmap for ListView articlesList = new ArrayList<HashMap<String, String>>(); new LoadAllArticles().execute(); // Get listview ListView lv = getListView(); } class LoadAllArticles extends AsyncTask<String, String, String> { /** * Before starting background thread Show Progress Dialog * */ @[member=override] protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(ArticleActivity.this); pDialog.setMessage("Chargement des articles. Attendez s'il vous plaît..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * getting All products from url * */ protected String doInBackground(String... args) { // Building Parameters List<NameValuePair> params = new ArrayList<NameValuePair>(); // getting JSON string from URL JSONObject json = jParser.makeHttpRequest(url_all_article, "GET", params); // Check your log cat for JSON reponse Log.d("Tous les articles: ", json.toString()); try { // Checking for SUCCESS TAG int success = json.getInt(TAG_SUCCESS); if (success == 1) { // products found // Getting Array of articles articles = json.getJSONArray(TAG_ARTICLES); // looping through All articles for (int i = 0; i < articles.length(); i++) { JSONObject c = articles.getJSONObject(i); // Storing each json item in variable String id = c.getString(TAG_ID); String titre = c.getString(TAG_TITRE); String dateArticle = c.getString(TAG_DATEARTICLE); String heureArticle = c.getString(TAG_HEUREARTICLE); // creating new HashMap HashMap<String, String> map = new HashMap<String, String>(); // adding each child node to HashMap key => value map.put(TAG_ID, id); map.put(TAG_TITRE, titre); map.put(TAG_DATEARTICLE, dateArticle); map.put(TAG_HEUREARTICLE, heureArticle); // adding HashList to ArrayList articlesList.add(map); } } else { // no products found // Launch Add New product Activity //Intent i = new Intent(getApplicationContext(), // NewProductActivity.class); // Closing all previous activities //i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //startActivity(i); //Afficher "Erreur, pas d'articles" } } catch (JSONException e) { e.printStackTrace(); } return null; } protected void onPostExecute(String file_url) { // dismiss the dialog once product deleted pDialog.dismiss(); } } Ainsi que mon code php pour interagir avec la base : // array for JSON response $response = array(); // include db connect class require_once __DIR__ . '/db_connect.php'; // connecting to db $db = new DB_CONNECT(); // get a product from products table $result = mysql_query("SELECT idArticle, titre, dateArticle, heureArticle FROM article ORDER BY idArticle DESC"); if (!empty($result)) { // check for empty result if (mysql_num_rows($result) > 0) { $result = mysql_fetch_array($result); $article = array(); $article["idArticle"] = $result["idArticle"]; $article["titre"] = $result["titre"]; $article["dateArticle"] = $result["dateArticle"]; $article["heureArticle"] = $result["heureArticle"]; // success $response["success"] = 1; // user node $response["article"] = array(); array_push($response["article"], $article); // echoing JSON response echo json_encode($response); } else { // no article found $response["success"] = 0; $response["message"] = "No article found"; // echo no users JSON echo json_encode($response); } } else { // no article found $response["success"] = 0; $response["message"] = "No article found"; // echo no users JSON echo json_encode($response); } } else { // required field is missing $response["success"] = 0; $response["message"] = "Required field(s) is missing"; // echoing JSON response echo json_encode($response); } Donc voilà, si quelqu'un peut m'aider à résoudre ce problème, je lui en serais très reconnaissant ! Merci d'avance ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) 25 mai 2016 Share Posté(e) 25 mai 2016 Fil déplacé de "Android en général" à "Développement > Accès aux données (ContentProvider, SQLite...)" 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Rejoignez la conversation
Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.