Sunday, 18 November 2018

java - How to fix NetworkonMainThreadException in Android?




I'm creating an project for assignment, I'm new to Android, and I wanted to access json from very common url http://api.androidhive.info/contacts/,



Problem: I'm trying to read the url and fetch and parse the json returned by this url,




I've already added following line into my AndroidManifest.xml






Preferences: and my android preferences are



        android:minSdkVersion="8"
android:targetSdkVersion="18" />




  1. Api level 18

  2. Android 4.3



and this is how I'm trying to read the url



static InputStream is = null;


DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);

HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();


The Error Message




11-02 05:23:47.843: E/AndroidRuntime(2207): FATAL EXCEPTION: main
11-02 05:23:47.843: E/AndroidRuntime(2207): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.me.countrypedia/com.me.countrypedia.MainActivity}: android.os.NetworkOnMainThreadException
11-02 05:23:47.843: E/AndroidRuntime(2207): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-02 05:23:47.843: E/AndroidRuntime(2207): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-02 05:23:47.843: E/AndroidRuntime(2207): at android.app.ActivityThread.access$600(ActivityThread.java:141)
11-02 05:23:47.843: E/AndroidRuntime(2207): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)


Also I'm following this tutorial for ListView Example

http://www.androidhive.info/2011/11/android-xml-parsing-tutorial/


Answer



Your Exception actually tells you exactly what you are doing wrong. You are not using another thread to perform NetworkOperations. Instead, you perform the network operation on your UI-Thread, which cannot (does not) work on Android.



Your code that connects to the url should be executed for example inside an AsyncTasks doInBackground() method, off the UI-Thread.



Take a look at this question on how to use the AsyncTask: How to use AsyncTask


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...