-2

I have a situation whats getting annoying because i can't get a result. Im trying to use a localhost JSON GET call. When i use this URL in my browser i get a JSON RESULT (not xml) http://localhost:8080/Boxbackend/webresources/entities.movingboxes

[
{
"boxId": 1,
"boxName": "Stuff_1"
},
{
"boxId": 2,
"boxName": "Stuff_2"
},
{
"boxId": 3,
"boxName": "Stuff_3"
}
]

I used this netbeans tutorial to create a RESTful Web Service

https://netbeans.org/kb/docs/websvc/rest.html

I used this example for android studio

https://www.learn2crack.com/2013/10/android-asynctask-json-parsing-example.html

when the url is passing:

JSONObject json = jParser.getJSONFromUrl(url);

json gets result null and and exception is fired sometimes the exception : android.os.NetworkOnMainThreadException

instead of localhost i also uses sometimes 10.0.2.2

im getting a little frustrated..

perhaps somebody can help

extra info:

the Mainactivity onCreate has a button

Button box_list_button=(Button)findViewById(R.id.box_list_button);
        box_list_button.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {    
                i = new Intent(getApplicationContext(), boxlist.class);
                startActivity(i);
            }
        });

the boxlist.class is like

   public class boxlist extends Activity {

        ArrayList mobileArray;
        String [] mobileResult =  {"there is no data"};
        private static String url = "http://localhost:8080/Boxbackend/webresources/entities.movingboxes";
        JSONArray mbox = null;
        private static final String TAG_BNAME = "boxName";

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.movingbox_layout);
            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(boxlist.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;
        } .......
user3402571
  • 61
  • 1
  • 1
  • 8

1 Answers1

0

android.os.NetworkOnMainThreadException will be thrown when you are attempting to perform any sort of network access from the main thread. Instead, use some mechanism to move the work to a background thread, such as an AsyncTask, Loader, or Service.

It is a bad practice to make any sort of blocking calls on the main thread of an Android app, including file access and network requests. Also void heavy computations. You can read more about that here and here.

Doug Stevenson
  • 297,357
  • 32
  • 422
  • 441