Partage
  • Partager sur Facebook
  • Partager sur Twitter

android probleme mysql asynctask

Sujet résolu
    11 mars 2015 à 19:57:44

    bonjour a tous ,

    j ai un probleme dans mon code( je developpe sous android studio) il me mets cette erreur 

    03-11 18:31:11.935    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 61 frames!  The application may be doing too much work on its main thread.
    03-11 18:31:12.250    1936-1936/learn2crack.asynctask D/gralloc_goldfish﹕ Emulator without GPU emulation detected.
    03-11 18:31:12.358    1936-1948/learn2crack.asynctask I/art﹕ Background sticky concurrent mark sweep GC freed 3616(177KB) AllocSpace objects, 1(20KB) LOS objects, 44% free, 348KB/623KB, paused 141.520ms total 791.444ms
    03-11 18:31:12.437    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 104 frames!  The application may be doing too much work on its main thread.
    03-11 18:33:56.542    1936-1948/learn2crack.asynctask I/art﹕ Background partial concurrent mark sweep GC freed 452(39KB) AllocSpace objects, 1(20KB) LOS objects, 56% free, 401KB/913KB, paused 68.454ms total 288.716ms
    03-11 18:33:57.829    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 425 frames!  The application may be doing too much work on its main thread.
    03-11 18:33:58.225    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 80 frames!  The application may be doing too much work on its main thread.
    03-11 18:33:59.354    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 287 frames!  The application may be doing too much work on its main thread.
    03-11 18:53:58.590    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 88 frames!  The application may be doing too much work on its main thread.
    03-11 18:53:58.881    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 66 frames!  The application may be doing too much work on its main thread.
    03-11 18:53:59.063    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 41 frames!  The application may be doing too much work on its main thread.
    03-11 18:53:59.417    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 65 frames!  The application may be doing too much work on its main thread.
    03-11 18:53:59.712    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 76 frames!  The application may be doing too much work on its main thread.
    03-11 18:53:59.921    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 45 frames!  The application may be doing too much work on its main thread.
    03-11 18:54:00.183    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 65 frames!  The application may be doing too much work on its main thread.
    03-11 18:54:00.191    1936-2420/learn2crack.asynctask E/JSON Parser﹕ Error parsing data org.json.JSONException: Unterminated array at character 13 of {n"user": [n{n"id": "001",n"name": "Raj Amal",n"email": "raj.amalw@gmail.com"n}n]n}n
    03-11 18:54:00.417    1936-1936/learn2crack.asynctask I/Choreographer﹕ Skipped 59 frames!  The application may be doing too much work on its main thread.
    03-11 18:54:00.624    1936-1936/learn2crack.asynctask D/AndroidRuntime﹕ Shutting down VM
        --------- beginning of crash
    03-11 18:54:00.625    1936-1936/learn2crack.asynctask E/AndroidRuntime﹕ FATAL EXCEPTION: main
        Process: learn2crack.asynctask, PID: 1936
        java.lang.NullPointerException: Attempt to invoke virtual method 'org.json.JSONArray org.json.JSONObject.getJSONArray(java.lang.String)' on a null object reference
                at learn2crack.asynctask.MainActivity$JSONParse.onPostExecute(MainActivity.java:71)
                at learn2crack.asynctask.MainActivity$JSONParse.onPostExecute(MainActivity.java:42)
                at android.os.AsyncTask.finish(AsyncTask.java:632)
                at android.os.AsyncTask.access$600(AsyncTask.java:177)
                at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)



    mon MainActivity.java 

    package learn2crack.asynctask;
    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    import android.app.Activity;
    import android.app.ProgressDialog;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    import learn2crack.asynctask.library.JSONParser;
    public class MainActivity extends Activity {
        TextView uid;
        TextView name1;
        TextView email1;
        Button Btngetdata;
        //URL to get JSON Array
        private static String url = "http://monurl.com/json.php";
        //JSON Node Names
        private static final String TAG_USER = "user";
        private static final String TAG_ID = "id";
        private static final String TAG_NAME = "name";
        private static final String TAG_EMAIL = "email";
        JSONArray user = null;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Btngetdata = (Button)findViewById(R.id.getdata);
            Btngetdata.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    new JSONParse().execute();
                }
            });
    
    
    
    
        }
        private class JSONParse extends AsyncTask<String, String, JSONObject> {
            private ProgressDialog pDialog;
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                uid = (TextView)findViewById(R.id.uid);
                name1 = (TextView)findViewById(R.id.name);
                email1 = (TextView)findViewById(R.id.email);
                pDialog = new ProgressDialog(MainActivity.this);
                pDialog.setMessage("Getting Data ...");
                pDialog.setIndeterminate(false);
                pDialog.setCancelable(true);
                pDialog.show();
            }
            @Override
            protected JSONObject doInBackground(String... args) {
                JSONParser jParser = new JSONParser();
                // Getting JSON from URL
                JSONObject json = jParser.getJSONFromUrl(url);
                return json;
            }
    
    
    
            @Override
            protected void onPostExecute(JSONObject json) {
                pDialog.dismiss();
                try {
                    // Getting JSON Array
                    user = json.getJSONArray(TAG_USER);
                    JSONObject c = user.getJSONObject(0);
                    // Storing  JSON item in a Variable
                    String id = c.getString(TAG_ID);
                    String name = c.getString(TAG_NAME);
                    String email = c.getString(TAG_EMAIL);
                    //Set JSON Data in TextView
                    uid.setText(id);
                    name1.setText(name);
                    email1.setText(email);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    }



    et mon JSONParser.java

    package learn2crack.asynctask.library;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.UnsupportedEncodingException;
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.json.JSONException;
    import org.json.JSONObject;
    import android.util.Log;
    public class JSONParser {
        static InputStream is = null;
        static JSONObject jObj = null;
        static String json = "";
        // constructor
        public JSONParser() {
        }
        public JSONObject getJSONFromUrl(String url) {
            // Making HTTP request
            try {
                // defaultHttpClient
                DefaultHttpClient httpClient = new DefaultHttpClient();
                HttpPost httpPost = new HttpPost(url);
                HttpResponse httpResponse = httpClient.execute(httpPost);
                HttpEntity httpEntity = httpResponse.getEntity();
                is = httpEntity.getContent();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(
                        is, "iso-8859-1"), 8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "n");
                }
                is.close();
                json = sb.toString();
            } catch (Exception e) {
                Log.e("Buffer Error", "Error converting result " + e.toString());
            }
            // try parse the string to a JSON object
            try {
                jObj = new JSONObject(json);
            } catch (JSONException e) {
                Log.e("JSON Parser", "Error parsing data " + e.toString());
            }
            // return JSON String
            return jObj;
        }
    }



    sans oublier mon internet permission

    Merci d avance

    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2015 à 12:10:40

      A priori, dans la ligne de code suivante :

      user = json.getJSONArray(TAG_USER);
      

      l'objet json est null :)

      • Partager sur Facebook
      • Partager sur Twitter
        15 mars 2015 à 15:51:40

        oui mais comme faire pour eviter cela ?

        • Partager sur Facebook
        • Partager sur Twitter
          15 mars 2015 à 16:02:34

          Le problème vient visiblement du JSON renvoyé par ton URL qui n'est pas valide comme indiqué dans le logcat :

          Error parsing data org.json.JSONException: Unterminated array at character 13 of {n"user": [n{n"id": "001",n"name": "Raj Amal",n"email": "raj.amalw@gmail.com"n}n]n}n

          • Partager sur Facebook
          • Partager sur Twitter
            15 mars 2015 à 16:14:29

            ok merci voici mon json 

            { "user": [ { "id": "001", "name": "Raj Amal", "email": "raj.amalw@gmail.com" } ] }
            • Partager sur Facebook
            • Partager sur Twitter
              15 mars 2015 à 16:16:51

              C'est bien il est beau...

              D'après le logcat, tu as des "n" qui traînent dans celui qui est renvoyé par ton web-service.

              -
              Edité par rolandl 15 mars 2015 à 16:18:00

              • Partager sur Facebook
              • Partager sur Twitter
                15 mars 2015 à 16:36:52

                il transforme les espace en "n" si je suprime les espace cela sera tjrs correcte en json?

                • Partager sur Facebook
                • Partager sur Twitter
                  15 mars 2015 à 16:49:34

                  merci cela marche j ai supprimer les espaces

                  • Partager sur Facebook
                  • Partager sur Twitter

                  android probleme mysql asynctask

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown