Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Android - Permintaan mySQL JSON memberikan NetworkOnMainThreadException

Saya mendengar bahwa mulai dari ICS, tidak diizinkan untuk melakukan operasi jaringan di utas UI (utama). Oleh karena itu, Anda harus melakukan operasi ini di utas terpisah. Jadi gunakan AsyncTask , Utas atau HandlerThread dengan Looper dan Handler untuk melakukan operasi web. Jika Anda mencobanya di perangkat yang menjalankan froyo atau gingerbread, itu akan baik-baik saja tetapi tidak di ICS.

Mengenai upaya Anda untuk menjalankannya melalui handler atau AsyncTask, itu tergantung pada bagaimana Anda melakukannya. Rekatkan kode itu sehingga saya melihat masalahnya.

Perbarui

public class MySQLAndroidActivity extends ListActivity {

    private static final String url = "http://X.X.X.X/test.php";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity2);

        LoadTask t = new LoadTask();
        t.execute(null);

    }

    private static class LoadTask extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {

        }

        @Override
        protected Void doInBackground(Void... params) {
            doStuff();

            return null;
        }
    }





    public static void doStuff() {
        JSONArray jArray;
        String result = null;
        InputStream is = null;
        StringBuilder sb = null;
        HttpResponse response;
        HttpEntity entity;

        ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
        // http post
        try {
            HttpClient httpclient = new DefaultHttpClient();

            HttpPost httppost = new HttpPost(url);

            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
            response = httpclient.execute(httppost);

            entity = response.getEntity();

            is = entity.getContent();

        } catch (Exception e) {
            Log.e("log_tag", "Error in http connection" + e.toString());
            System.exit(1);
        }

        // convert response to string
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
            sb = new StringBuilder();
            sb.append(reader.readLine() + "\n");

            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
            is.close();
            result = sb.toString();

            Log.i("json string", result);
        } catch (Exception e) {
            Log.e("log_tag", "Error converting result " + e.toString());
        }


        // parsing data
        String idfriend;
        String id1;
        String id2;
        try {
            jArray = new JSONArray(result);
            JSONObject json_data = null;

            System.out.println("Length " + jArray.length());
            Log.d("DB", "Length " + jArray.length());

            for (int i = 0; i < jArray.length(); i++) {

                System.out.println("counter " + i);
                json_data = jArray.getJSONObject(i);
                idfriend = json_data.getString("idfriend");
                id1 = json_data.getString("id1");
                id2 = json_data.getString("id2");

                System.out.println("id1: " + id1);
            }
        } catch (JSONException e1) {
            Log.d("DB", "Error somewhere");
        } catch (ParseException e1) {
            e1.printStackTrace();
        }
    }

}

*Ada beberapa masalah pemanggilan metode dan yang paling penting adalah Anda mengambil kunci dari JSONObject sebagai Idfriend, Id1, Id2 yang salah karena dalam string json Anda kuncinya seperti idfriend, id1, id2 . Peka huruf besar/kecil, itulah sebabnya crash.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL dengan Penghapusan Lunak, Kunci Unik, dan Batasan Kunci Asing

  2. Django Admin - masuk

  3. Utilitas MySQL - file opsi ~/.my.cnf

  4. Akses IP MySQL jarak jauh

  5. Pilih, di mana JSON Array berisi