android.os.NetworkOnMainThreadException inside AsyncTask

android, android-asynctask, http-post, networkonmainthread

Solution

Move the `JSON` code into `doInBackground()`:

@Override
protected HttpResponse doInBackground(String... params) {
    ...
    Your current HttpPost code...
    ...
    Gson gSon = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
    gSon.fromJson(IOUtils.toString(result.getEntity().getContent()), LogonInfo.class).fill(form);
    ...
}

Problem

I'm building an application and am getting a NetworkOnMainThreadException INSIDE an AsyncTask Call: ``` new POST(this).execute(""); ``` asyncTask: ``` public class POST extends AsyncTask<String, Integer, HttpResponse>{ private MainActivity form; public POST(MainActivity form){ this.form = form; } @Override protected HttpResponse doInBackground(String... params) { try { HttpPost httppost = new HttpPost("http://diarwe.com:8080/account/login"); List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3); nameValuePairs.add(new BasicNameValuePair("email",((EditText)form.findViewById(R.id.in_email)).getText().toString())); //add more... httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); return new DefaultHttpClient().execute(httppost); } catch (Exception e) { Log.e("BackgroundError", e.toString()); } return null; } @Override protected void onPostExecute(HttpResponse result) { super.onPostExecute(result); try { Gson gSon = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create(); gSon.fromJson(IOUtils.toString(result.getEntity().getContent()), LogonInfo.class).fill(form); } catch (Exception e) { Log.e("BackgroundError", e.toString()); } } } ``` LogCat: ``` BackgroundError | android.os.NetworkOnMainThreadException ``` I'm very confused why this exception is thrown in the do in the doInBackground of an AsyncTask, any ideas?

Original source